mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
2.8 KiB
154 lines
2.8 KiB
|
|
#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 <ksalpha.h>
|
|
#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*/
|
|
|