|
Lines 647-652
ENTRY(break_fault)
Link Here
|
| 647 |
SAVE_REST |
647 |
SAVE_REST |
| 648 |
br.call.sptk.many rp=demine_args // clear NaT bits in (potential) syscall args |
648 |
br.call.sptk.many rp=demine_args // clear NaT bits in (potential) syscall args |
| 649 |
|
649 |
|
|
|
650 |
# demine_args exits with r2 containing the frame marker when the syscall was issued. |
| 651 |
and r18=0x7f,r2 // get sof of issuer's cfm |
| 652 |
extr.u r17=r2,7,7 // get sol of issuer's cfm |
| 653 |
;; |
| 654 |
add r17=8,r17 // sol + 8 |
| 655 |
|
| 650 |
mov r3=255 |
656 |
mov r3=255 |
| 651 |
adds r15=-1024,r15 // r15 contains the syscall number---subtract 1024 |
657 |
adds r15=-1024,r15 // r15 contains the syscall number---subtract 1024 |
| 652 |
adds r2=IA64_TASK_PTRACE_OFFSET,r13 // r2 = ¤t->ptrace |
658 |
adds r2=IA64_TASK_PTRACE_OFFSET,r13 // r2 = ¤t->ptrace |
|
Lines 654-659
ENTRY(break_fault)
Link Here
|
| 654 |
cmp.geu p6,p7=r3,r15 // (syscall > 0 && syscall <= 1024+255) ? |
660 |
cmp.geu p6,p7=r3,r15 // (syscall > 0 && syscall <= 1024+255) ? |
| 655 |
movl r16=sys_call_table |
661 |
movl r16=sys_call_table |
| 656 |
;; |
662 |
;; |
|
|
663 |
(p6) cmp.lt p7,p6=r17,r18 // frame size can't be more than local+8 |
| 664 |
;; |
| 657 |
(p6) shladd r16=r15,3,r16 |
665 |
(p6) shladd r16=r15,3,r16 |
| 658 |
movl r15=ia64_ret_from_syscall |
666 |
movl r15=ia64_ret_from_syscall |
| 659 |
(p7) adds r16=(__NR_ni_syscall-1024)*8,r16 // force __NR_ni_syscall |
667 |
(p7) adds r16=(__NR_ni_syscall-1024)*8,r16 // force __NR_ni_syscall |
|
Lines 693-698
ENTRY(break_fault)
Link Here
|
| 693 |
// NOT REACHED |
701 |
// NOT REACHED |
| 694 |
END(break_fault) |
702 |
END(break_fault) |
| 695 |
|
703 |
|
|
|
704 |
# Ensure that the syscall arguments plus r15 (syscall number) are valid. |
| 705 |
# Exit with r2 containing the frame size when the syscall was issued. |
| 696 |
ENTRY(demine_args) |
706 |
ENTRY(demine_args) |
| 697 |
alloc r2=ar.pfs,8,0,0,0 |
707 |
alloc r2=ar.pfs,8,0,0,0 |
| 698 |
tnat.nz p8,p0=in0 |
708 |
tnat.nz p8,p0=in0 |