.globl _setlabel
.align 1
_setlabel:
.word 0x0
movl 4(ap),r2
movl 16(fp),(r2) #pc
movl 12(fp),8(r2) #fp
movl 8(fp),12(r2) #ap
movl 20(fp),r3 #number of longs to pop
mull2 $4,r3 #cvt to bytes
addl2 $20,r3
addl3 r3,fp,4(r2) #sp
movl r6,16(r2) #store the saved regs
movl r7,20(r2)
movl r8,24(r2)
movl r9,28(r2)
movl r10,32(r2)
movl r11,36(r2)
clrl r0
ret
.globl _gotolabel
.align 1
_gotolabel:
.word 0x0
movl 4(ap),r0 #return value
movl 8(ap),r2
movl (r2),r3 #get the pc
movl 16(r2),r6 #restore the saved regs
movl 20(r2),r7
movl 24(r2),r8
movl 28(r2),r9
movl 32(r2),r10
movl 36(r2),r11
movl 12(r2),ap #ap
movl 8(r2),fp #fp
movl 4(r2),sp #sp; this has to be next to last
jmp (r3) #pc
calls $0, _abort
|