#define v0 $0 #define t0 $1 #define t1 $2 #define t2 $3 #define t3 $4 #define t4 $5 #define t5 $6 #define t6 $7 #define t7 $8 #define s0 $9 #define s1 $10 #define s2 $11 #define s3 $12 #define s4 $13 #define s5 $14 #define s6 $15 #define fp $15 #define a0 $16 #define a1 $17 #define a2 $18 #define a3 $19 #define a4 $20 #define a5 $21 #define t8 $22 #define t9 $23 #define t10 $24 #define t11 $25 #define ra $26 #define t12 $27 #define pv $27 #define AT $28 #define t13 $29 #define gp $29 #define sp $30 #define rzero $31 #define s7 t1 #define s8 t2 #define s9 t3 #define s10 t4 #define s11 t5 #define s12 t6 #define s13 t7 #define r0 $0 #define r1 $1 #define r2 $2 #define r3 $3 #define r4 $4 #define r5 $5 #define r6 $6 #define r7 $7 #define r8 $8 #define r9 $9 #define r10 $10 #define r11 $11 #define r12 $12 #define r13 $13 #define r14 $14 #define r15 $15 #define r16 $16 #define r17 $17 #define r18 $18 #define r19 $19 #define r20 $20 #define r21 $21 #define r22 $22 #define r23 $23 #define r24 $24 #define r25 $25 #define r26 $26 #define r27 $27 #define r28 $28 #define r29 $29 #define r30 $30 #define r31 $31 #define f0 $f0 #define f1 $f1 #define f2 $f2 #define f3 $f3 #define f4 $f4 #define f5 $f5 #define f6 $f6 #define f7 $f7 #define f8 $f8 #define f9 $f9 #define f10 $f10 #define f11 $f11 #define f12 $f12 #define f13 $f13 #define f14 $f14 #define f15 $f15 #define f16 $f16 #define f17 $f17 #define f18 $f18 #define f19 $f19 #define f20 $f20 #define f21 $f21 #define f22 $f22 #define f23 $f23 #define f24 $f24 #define f25 $f25 #define f26 $f26 #define f27 $f27 #define f28 $f28 #define f29 $f29 #define f30 $f30 #define fzero $f31 #include #define VALUE_OFFSET 0xbf0 #define OBTAIN_CURRENT_CONTEXT(_RETURN_REG)\ call_pal rdteb;\ ldptr _RETURN_REG,VALUE_OFFSET($0); #define ldptr ldl #define stptr stl #define ldlong ldl #define stlong stl #define COMPUTE_ENTRY_ADDRESS s4addq #define LPAREN ( #define RPAREN ) #define LSHIFTOP << #define RSHIFTOP >> #define HEX(_n) 0x##_n #define ASM_END(_name) .end _name #define NOTOP(_n) ~##_n #define LDEXTPTR(_ptr,_extSym) \ lda _ptr, _extSym; /* * On NT, use this macro if the frameSize is >= 0x1000 to ensure that the * stack gets extended. Default server stack on NT is only 16K. */ #define GRAB_STACK(frameSize) \ lda t9,-frameSize(sp) ; \ lda t10,-0x1000(sp) ; /* one page before current sp */ \ touchNext: \ stq rzero,0x0(t10); /* touch page to get it allocated */ \ cmple t10,t9,v0 ; /* have we touched all the pages? */ \ lda t10,-0x2000(t10) ; /* prepare to touch next page */ \ beq v0,touchNext ; /* branch if more to touch */ \ mov t9,sp ; /* Now we can set the sp safely*/