.globl ___Get_PC, ___Set_PC ! $Id$ ! This is the machine-dependant part of the ACK debugger support. ! ___Get_PC takes a frame pointer (local base) argument and returns the ! return address from this frame. ! ___Set_PC takes a frame pointer (local base) argument plus a return ! address and sets the return address of this frame to the ! return address supplied. ___Get_PC: ld [%l0],%o0 tst %o0 beq 3f nop cmp %o0,%l1 bne 1f nop add %i7, 8, %o0 3: retl nop 1: ta 3 add %l1,%g0,%o1 2: add %o1,7,%o2 andn %o2,7,%o2 ld [%o2+4],%o1 cmp %o0,%o1 bne 2b nop ld [%o2+0x3c],%o0 inc 8,%o0 retl nop ___Set_PC: ld [%l0],%o0 tst %o0 beq 3f nop cmp %o0,%l1 bne 1f nop ld [%l0+4],%i7 dec 8,%i7 3: retl nop 1: ta 3 add %l1,%g0,%o1 2: add %o1,7,%o2 andn %o2,7,%o2 ld [%o2+4],%o1 cmp %o0,%o1 bne 2b nop ld [%l0+4],%o0 dec 8,%o0 st %o0,[%o2+0x3c] retl nop