Windows NT 4.0 source code leak
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

#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*/