12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- .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
|