1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
$NetBSD: patch-aj,v 1.5 2002/03/25 15:19:31 briggs Exp $
*** mit-pthreads/machdep/syscall-powerpc-netbsd.S Thu Feb 14 12:30:14 2002
--- mit-pthreads/machdep/syscall-powerpc-netbsd.S Mon Mar 25 09:52:47 2002
***************
*** 1,10 ****
#include <machine/asm.h>
#define COMPAT_43
#include <sys/syscall.h>
- #ifndef __CONCAT
- #include <sys/cdefs.h>
- #endif
- #define CONCAT __CONCAT
#undef SYSCALL
--- 1,6 ----
***************
*** 26,45 ****
SYSCALL invocation. */
ENTRY(machdep_cerror)
! mflr 0 # Save LR in 0
! stwu 1,-16(1) # allocate new stack frame
! stw 0,20(1) # Stash 0 in stack
! stw 31,8(1) # Stash 31 in stack (since it's callee-saved
! mr 31,3 # and we stash return there)
bl PIC_PLT(_C_LABEL(__errno))
! stw 31,0(3) # *errno() = err
! lwz 0,20(1) # Restore LR from stack to 0
! neg 3,31 # return -errno to 3
! lwz 31,8(1) # Restore 31 from stack
mtlr 0
! la 1,16(1) # Restore stack frame
! li 4,-1 # Put -1 in r4 for those syscalls that return
! blr # two values
/* The fork system call is special... */
ENTRY(machdep_sys_fork)
--- 22,41 ----
SYSCALL invocation. */
ENTRY(machdep_cerror)
! mflr 0 /* Save LR in 0 */
! stwu 1,-16(1) /* allocate new stack frame */
! stw 0,20(1) /* Stash 0 in stack */
! stw 31,8(1) /* Stash 31 in stack (since it's callee-saved */
! mr 31,3 /* and we stash return there) */
bl PIC_PLT(_C_LABEL(__errno))
! stw 31,0(3) /* *errno() = err */
! lwz 0,20(1) /* Restore LR from stack to 0 */
! neg 3,31 /* return -errno to 3 */
! lwz 31,8(1) /* Restore 31 from stack */
mtlr 0
! la 1,16(1) /* Restore stack frame */
! li 4,-1 /* Put -1 in r4 for those syscalls that ret */
! blr /* two values */
/* The fork system call is special... */
ENTRY(machdep_sys_fork)
***************
*** 55,64 ****
li 0,SYS_pipe
sc
bso PIC_PLT(_C_LABEL(machdep_cerror))
! stw 3,0(5) # Success, store fds
stw 4,4(5)
li 3,0
! blr # And return 0
#ifndef SYS___sigsuspend14
/* The sigsuspend system call is special... */
--- 51,60 ----
li 0,SYS_pipe
sc
bso PIC_PLT(_C_LABEL(machdep_cerror))
! stw 3,0(5) /* Success, store fds */
stw 4,4(5)
li 3,0
! blr /* And return 0 */
#ifndef SYS___sigsuspend14
/* The sigsuspend system call is special... */
***************
*** 72,91 ****
#ifndef SYS___sigprocmask14
/* The sigprocmask system call is special... */
ENTRY(machdep_sys_sigprocmask)
! or. 4,4,4 # Set == NULL ?
! li 6,1 # how = SIG_BLOCK
beq Ldoit
! lwz 4,0(4) # if not, replace it in r4 with #set
mr 6,3
! Ldoit: mr 3,6 # ... using sigprocmask(SIG_BLOCK)
li 0,SYS_compat_13_sigprocmask13
sc
bso PIC_PLT(_C_LABEL(machdep_cerror))
! or. 5,5,5 # Check to see if oset requested
! beq Ldone # if oset != NULL
! stw 3,0(5) # *oset = oldmask
Ldone:
! li 3,0 # return 0
blr
#endif /* SYS_sigprocmask14 */
--- 68,87 ----
#ifndef SYS___sigprocmask14
/* The sigprocmask system call is special... */
ENTRY(machdep_sys_sigprocmask)
! or. 4,4,4 /* Set == NULL ? */
! li 6,1 /* how = SIG_BLOCK */
beq Ldoit
! lwz 4,0(4) /* if not, replace it in r4 with #set */
mr 6,3
! Ldoit: mr 3,6 /* ... using sigprocmask(SIG_BLOCK) */
li 0,SYS_compat_13_sigprocmask13
sc
bso PIC_PLT(_C_LABEL(machdep_cerror))
! or. 5,5,5 /* Check to see if oset requested */
! beq Ldone /* if oset != NULL */
! stw 3,0(5) /* *oset = oldmask */
Ldone:
! li 3,0 /* return 0 */
blr
#endif /* SYS_sigprocmask14 */
|