+/* some room to accomodate changes of the stack frame size during replacement */
+ /* XXX we should find a cleaner solution here */
+#define REPLACEMENT_ROOM 512
+
+#define REPLACEMENT_STACK_OFFSET ((sizeexecutionstate + REPLACEMENT_ROOM + 0xf) & ~0xf)
+
+ .ent asm_replacement_out
+
+asm_replacement_out:
+ /* create stack frame */
+ daddiu sp,sp,-REPLACEMENT_STACK_OFFSET
+
+ /* save registers in execution state */
+ sd $0 ,( 0*8+offes_intregs)(sp)
+ sd $1 ,( 1*8+offes_intregs)(sp)
+ sd $2 ,( 2*8+offes_intregs)(sp)
+ sd $3 ,( 3*8+offes_intregs)(sp)
+ sd $4 ,( 4*8+offes_intregs)(sp)
+ sd $5 ,( 5*8+offes_intregs)(sp)
+ sd $6 ,( 6*8+offes_intregs)(sp)
+ sd $7 ,( 7*8+offes_intregs)(sp)
+ sd $8 ,( 8*8+offes_intregs)(sp)
+ sd $9 ,( 9*8+offes_intregs)(sp)
+ sd $10,(10*8+offes_intregs)(sp)
+ sd $11,(11*8+offes_intregs)(sp)
+ sd $12,(12*8+offes_intregs)(sp)
+ sd $13,(13*8+offes_intregs)(sp)
+ sd $14,(14*8+offes_intregs)(sp)
+ sd $15,(15*8+offes_intregs)(sp)
+ sd $16,(16*8+offes_intregs)(sp)
+ sd $17,(17*8+offes_intregs)(sp)
+ sd $18,(18*8+offes_intregs)(sp)
+ sd $19,(19*8+offes_intregs)(sp)
+ sd $20,(20*8+offes_intregs)(sp)
+ sd $21,(21*8+offes_intregs)(sp)
+ sd $22,(22*8+offes_intregs)(sp)
+ sd $23,(23*8+offes_intregs)(sp)
+ sd $24,(24*8+offes_intregs)(sp)
+ sd $25,(25*8+offes_intregs)(sp)
+ sd $26,(26*8+offes_intregs)(sp)
+ sd $27,(27*8+offes_intregs)(sp)
+ sd $28,(28*8+offes_intregs)(sp)
+ sd $29,(29*8+offes_intregs)(sp)
+ sd $30,(30*8+offes_intregs)(sp)
+ sd $31,(31*8+offes_intregs)(sp)
+
+ sdc1 $f0 ,( 0*8+offes_fltregs)(sp)
+ sdc1 $f1 ,( 1*8+offes_fltregs)(sp)
+ sdc1 $f2 ,( 2*8+offes_fltregs)(sp)
+ sdc1 $f3 ,( 3*8+offes_fltregs)(sp)
+ sdc1 $f4 ,( 4*8+offes_fltregs)(sp)
+ sdc1 $f5 ,( 5*8+offes_fltregs)(sp)
+ sdc1 $f6 ,( 6*8+offes_fltregs)(sp)
+ sdc1 $f7 ,( 7*8+offes_fltregs)(sp)
+ sdc1 $f8 ,( 8*8+offes_fltregs)(sp)
+ sdc1 $f9 ,( 9*8+offes_fltregs)(sp)
+ sdc1 $f10,(10*8+offes_fltregs)(sp)
+ sdc1 $f11,(11*8+offes_fltregs)(sp)
+ sdc1 $f12,(12*8+offes_fltregs)(sp)
+ sdc1 $f13,(13*8+offes_fltregs)(sp)
+ sdc1 $f14,(14*8+offes_fltregs)(sp)
+ sdc1 $f15,(15*8+offes_fltregs)(sp)
+ sdc1 $f16,(16*8+offes_fltregs)(sp)
+ sdc1 $f17,(17*8+offes_fltregs)(sp)
+ sdc1 $f18,(18*8+offes_fltregs)(sp)
+ sdc1 $f19,(19*8+offes_fltregs)(sp)
+ sdc1 $f20,(20*8+offes_fltregs)(sp)
+ sdc1 $f21,(21*8+offes_fltregs)(sp)
+ sdc1 $f22,(22*8+offes_fltregs)(sp)
+ sdc1 $f23,(23*8+offes_fltregs)(sp)
+ sdc1 $f24,(24*8+offes_fltregs)(sp)
+ sdc1 $f25,(25*8+offes_fltregs)(sp)
+ sdc1 $f26,(26*8+offes_fltregs)(sp)
+ sdc1 $f27,(27*8+offes_fltregs)(sp)
+ sdc1 $f28,(28*8+offes_fltregs)(sp)
+ sdc1 $f29,(29*8+offes_fltregs)(sp)
+ sdc1 $f30,(30*8+offes_fltregs)(sp)
+ sdc1 $f31,(31*8+offes_fltregs)(sp)
+
+ /* calculate sp of method */
+ daddiu itmp1,sp,(REPLACEMENT_STACK_OFFSET + 2*8)
+ sd itmp1,(offes_sp)(sp)