Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
46aab8c5
Commit
46aab8c5
authored
Oct 18, 2005
by
Paul Mackerras
Browse files
Options
Browse Files
Download
Plain Diff
Merge
rsync://oak/kernels/iseries/work/
parents
77f543cb
b09a4913
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
195 additions
and
309 deletions
+195
-309
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/entry_64.S
+5
-5
arch/powerpc/kernel/signal_32.c
arch/powerpc/kernel/signal_32.c
+14
-14
arch/powerpc/kernel/sys_ppc32.c
arch/powerpc/kernel/sys_ppc32.c
+52
-164
arch/powerpc/kernel/systbl.S
arch/powerpc/kernel/systbl.S
+57
-59
arch/ppc64/kernel/entry.S
arch/ppc64/kernel/entry.S
+5
-5
arch/ppc64/kernel/misc.S
arch/ppc64/kernel/misc.S
+61
-61
arch/ppc64/kernel/ptrace32.c
arch/ppc64/kernel/ptrace32.c
+1
-1
No files found.
arch/powerpc/kernel/entry_64.S
View file @
46aab8c5
...
...
@@ -262,7 +262,7 @@ _GLOBAL(save_nvgprs)
*/
_GLOBAL
(
ppc32_sigsuspend
)
bl
.
save_nvgprs
bl
.
sys32
_sigsuspend
bl
.
compat_sys
_sigsuspend
b
70
f
_GLOBAL
(
ppc64_rt_sigsuspend
)
...
...
@@ -272,7 +272,7 @@ _GLOBAL(ppc64_rt_sigsuspend)
_GLOBAL
(
ppc32_rt_sigsuspend
)
bl
.
save_nvgprs
bl
.
sys32
_rt_sigsuspend
bl
.
compat_sys
_rt_sigsuspend
70
:
cmpdi
0
,
r3
,
0
/
*
If
it
returned
an
error
,
we
need
to
return
via
syscall_exit
to
set
the
SO
bit
in
cr0
and
potentially
stop
for
ptrace
.
*/
...
...
@@ -307,7 +307,7 @@ _GLOBAL(ppc_clone)
_GLOBAL
(
ppc32_swapcontext
)
bl
.
save_nvgprs
bl
.
sys32
_swapcontext
bl
.
compat_sys
_swapcontext
b
80
f
_GLOBAL
(
ppc64_swapcontext
)
...
...
@@ -316,11 +316,11 @@ _GLOBAL(ppc64_swapcontext)
b
80
f
_GLOBAL
(
ppc32_sigreturn
)
bl
.
sys32
_sigreturn
bl
.
compat_sys
_sigreturn
b
80
f
_GLOBAL
(
ppc32_rt_sigreturn
)
bl
.
sys32
_rt_sigreturn
bl
.
compat_sys
_rt_sigreturn
b
80
f
_GLOBAL
(
ppc64_rt_sigreturn
)
...
...
arch/powerpc/kernel/signal_32.c
View file @
46aab8c5
...
...
@@ -58,12 +58,12 @@
#ifdef CONFIG_PPC64
#define do_signal do_signal32
#define sys_sigsuspend
sys32
_sigsuspend
#define sys_rt_sigsuspend
sys32
_rt_sigsuspend
#define sys_rt_sigreturn
sys32
_rt_sigreturn
#define sys_sigaction
sys32
_sigaction
#define sys_swapcontext
sys32
_swapcontext
#define sys_sigreturn
sys32
_sigreturn
#define sys_sigsuspend
compat_sys
_sigsuspend
#define sys_rt_sigsuspend
compat_sys
_rt_sigsuspend
#define sys_rt_sigreturn
compat_sys
_rt_sigreturn
#define sys_sigaction
compat_sys
_sigaction
#define sys_swapcontext
compat_sys
_swapcontext
#define sys_sigreturn
compat_sys
_sigreturn
#define old_sigaction old_sigaction32
#define sigcontext sigcontext32
...
...
@@ -540,7 +540,7 @@ static long restore_user_regs(struct pt_regs *regs,
}
#ifdef CONFIG_PPC64
long
sys32
_rt_sigaction
(
int
sig
,
const
struct
sigaction32
__user
*
act
,
long
compat_sys
_rt_sigaction
(
int
sig
,
const
struct
sigaction32
__user
*
act
,
struct
sigaction32
__user
*
oact
,
size_t
sigsetsize
)
{
struct
k_sigaction
new_ka
,
old_ka
;
...
...
@@ -577,7 +577,7 @@ long sys32_rt_sigaction(int sig, const struct sigaction32 __user *act,
* of a signed int (msr in 32-bit mode) and the register representation
* of a signed int (msr in 64-bit mode) is performed.
*/
long
sys32
_rt_sigprocmask
(
u32
how
,
compat_sigset_t
__user
*
set
,
long
compat_sys
_rt_sigprocmask
(
u32
how
,
compat_sigset_t
__user
*
set
,
compat_sigset_t
__user
*
oset
,
size_t
sigsetsize
)
{
sigset_t
s
;
...
...
@@ -605,7 +605,7 @@ long sys32_rt_sigprocmask(u32 how, compat_sigset_t __user *set,
return
0
;
}
long
sys32
_rt_sigpending
(
compat_sigset_t
__user
*
set
,
compat_size_t
sigsetsize
)
long
compat_sys
_rt_sigpending
(
compat_sigset_t
__user
*
set
,
compat_size_t
sigsetsize
)
{
sigset_t
s
;
int
ret
;
...
...
@@ -687,7 +687,7 @@ int copy_siginfo_to_user32(struct compat_siginfo __user *d, siginfo_t *s)
* (msr in 32-bit mode) and the register representation of a signed int
* (msr in 64-bit mode) is performed.
*/
long
sys32
_rt_sigqueueinfo
(
u32
pid
,
u32
sig
,
compat_siginfo_t
__user
*
uinfo
)
long
compat_sys
_rt_sigqueueinfo
(
u32
pid
,
u32
sig
,
compat_siginfo_t
__user
*
uinfo
)
{
siginfo_t
info
;
int
ret
;
...
...
@@ -706,10 +706,10 @@ long sys32_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo)
* Start Alternate signal stack support
*
* System Calls
* sigaltatck
sys32
_sigaltstack
* sigaltatck
compat_sys
_sigaltstack
*/
int
sys32
_sigaltstack
(
u32
__new
,
u32
__old
,
int
r5
,
int
compat_sys
_sigaltstack
(
u32
__new
,
u32
__old
,
int
r5
,
int
r6
,
int
r7
,
int
r8
,
struct
pt_regs
*
regs
)
{
stack_32_t
__user
*
newstack
=
(
stack_32_t
__user
*
)(
long
)
__new
;
...
...
@@ -942,11 +942,11 @@ long sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
*/
#ifdef CONFIG_PPC64
/*
* We use the
sys32
_ version that does the 32/64 bits conversion
* We use the
compat_sys
_ version that does the 32/64 bits conversion
* and takes userland pointer directly. What about error checking ?
* nobody does any...
*/
sys32
_sigaltstack
((
u32
)(
u64
)
&
rt_sf
->
uc
.
uc_stack
,
0
,
0
,
0
,
0
,
0
,
regs
);
compat_sys
_sigaltstack
((
u32
)(
u64
)
&
rt_sf
->
uc
.
uc_stack
,
0
,
0
,
0
,
0
,
0
,
regs
);
return
(
int
)
regs
->
result
;
#else
do_sigaltstack
(
&
rt_sf
->
uc
.
uc_stack
,
NULL
,
regs
->
gpr
[
1
]);
...
...
arch/powerpc/kernel/sys_ppc32.c
View file @
46aab8c5
...
...
@@ -113,96 +113,6 @@ asmlinkage int old32_readdir(unsigned int fd, struct old_linux_dirent32 __user *
return
error
;
}
struct
linux_dirent32
{
u32
d_ino
;
u32
d_off
;
unsigned
short
d_reclen
;
char
d_name
[
1
];
};
struct
getdents_callback32
{
struct
linux_dirent32
__user
*
current_dir
;
struct
linux_dirent32
__user
*
previous
;
int
count
;
int
error
;
};
static
int
filldir
(
void
*
__buf
,
const
char
*
name
,
int
namlen
,
off_t
offset
,
ino_t
ino
,
unsigned
int
d_type
)
{
struct
linux_dirent32
__user
*
dirent
;
struct
getdents_callback32
*
buf
=
(
struct
getdents_callback32
*
)
__buf
;
int
reclen
=
ROUND_UP
(
NAME_OFFSET
(
dirent
)
+
namlen
+
2
);
buf
->
error
=
-
EINVAL
;
/* only used if we fail.. */
if
(
reclen
>
buf
->
count
)
return
-
EINVAL
;
dirent
=
buf
->
previous
;
if
(
dirent
)
{
if
(
__put_user
(
offset
,
&
dirent
->
d_off
))
goto
efault
;
}
dirent
=
buf
->
current_dir
;
if
(
__put_user
(
ino
,
&
dirent
->
d_ino
))
goto
efault
;
if
(
__put_user
(
reclen
,
&
dirent
->
d_reclen
))
goto
efault
;
if
(
copy_to_user
(
dirent
->
d_name
,
name
,
namlen
))
goto
efault
;
if
(
__put_user
(
0
,
dirent
->
d_name
+
namlen
))
goto
efault
;
if
(
__put_user
(
d_type
,
(
char
__user
*
)
dirent
+
reclen
-
1
))
goto
efault
;
buf
->
previous
=
dirent
;
dirent
=
(
void
__user
*
)
dirent
+
reclen
;
buf
->
current_dir
=
dirent
;
buf
->
count
-=
reclen
;
return
0
;
efault:
buf
->
error
=
-
EFAULT
;
return
-
EFAULT
;
}
asmlinkage
long
sys32_getdents
(
unsigned
int
fd
,
struct
linux_dirent32
__user
*
dirent
,
unsigned
int
count
)
{
struct
file
*
file
;
struct
linux_dirent32
__user
*
lastdirent
;
struct
getdents_callback32
buf
;
int
error
;
error
=
-
EFAULT
;
if
(
!
access_ok
(
VERIFY_WRITE
,
dirent
,
count
))
goto
out
;
error
=
-
EBADF
;
file
=
fget
(
fd
);
if
(
!
file
)
goto
out
;
buf
.
current_dir
=
dirent
;
buf
.
previous
=
NULL
;
buf
.
count
=
count
;
buf
.
error
=
0
;
error
=
vfs_readdir
(
file
,
(
filldir_t
)
filldir
,
&
buf
);
if
(
error
<
0
)
goto
out_putf
;
error
=
buf
.
error
;
lastdirent
=
buf
.
previous
;
if
(
lastdirent
)
{
if
(
put_user
(
file
->
f_pos
,
&
lastdirent
->
d_off
))
error
=
-
EFAULT
;
else
error
=
count
-
buf
.
count
;
}
out_putf:
fput
(
file
);
out:
return
error
;
}
asmlinkage
long
ppc32_select
(
u32
n
,
compat_ulong_t
__user
*
inp
,
compat_ulong_t
__user
*
outp
,
compat_ulong_t
__user
*
exp
,
compat_uptr_t
tvp_x
)
...
...
@@ -247,7 +157,7 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat __user *statbuf)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sysfs
(
u32
option
,
u32
arg1
,
u32
arg2
)
asmlinkage
long
compat_sys
_sysfs
(
u32
option
,
u32
arg1
,
u32
arg2
)
{
return
sys_sysfs
((
int
)
option
,
arg1
,
arg2
);
}
...
...
@@ -269,7 +179,7 @@ struct timex32 {
extern
int
do_adjtimex
(
struct
timex
*
);
extern
void
ppc_adjtimex
(
void
);
asmlinkage
long
sys32
_adjtimex
(
struct
timex32
__user
*
utp
)
asmlinkage
long
compat_sys
_adjtimex
(
struct
timex32
__user
*
utp
)
{
struct
timex
txc
;
int
ret
;
...
...
@@ -328,7 +238,7 @@ asmlinkage long sys32_adjtimex(struct timex32 __user *utp)
return
ret
;
}
asmlinkage
long
sys32
_pause
(
void
)
asmlinkage
long
compat_sys
_pause
(
void
)
{
current
->
state
=
TASK_INTERRUPTIBLE
;
schedule
();
...
...
@@ -374,7 +284,7 @@ struct sysinfo32 {
char
_f
[
20
-
2
*
sizeof
(
int
)
-
sizeof
(
int
)];
};
asmlinkage
long
sys32
_sysinfo
(
struct
sysinfo32
__user
*
info
)
asmlinkage
long
compat_sys
_sysinfo
(
struct
sysinfo32
__user
*
info
)
{
struct
sysinfo
s
;
int
ret
,
err
;
...
...
@@ -431,7 +341,7 @@ asmlinkage long sys32_sysinfo(struct sysinfo32 __user *info)
sorts of things, like timeval and itimerval. */
extern
struct
timezone
sys_tz
;
asmlinkage
long
sys32
_gettimeofday
(
struct
compat_timeval
__user
*
tv
,
struct
timezone
__user
*
tz
)
asmlinkage
long
compat_sys
_gettimeofday
(
struct
compat_timeval
__user
*
tv
,
struct
timezone
__user
*
tz
)
{
if
(
tv
)
{
struct
timeval
ktv
;
...
...
@@ -449,7 +359,7 @@ asmlinkage long sys32_gettimeofday(struct compat_timeval __user *tv, struct time
asmlinkage
long
sys32
_settimeofday
(
struct
compat_timeval
__user
*
tv
,
struct
timezone
__user
*
tz
)
asmlinkage
long
compat_sys
_settimeofday
(
struct
compat_timeval
__user
*
tv
,
struct
timezone
__user
*
tz
)
{
struct
timespec
kts
;
struct
timezone
ktz
;
...
...
@@ -467,7 +377,7 @@ asmlinkage long sys32_settimeofday(struct compat_timeval __user *tv, struct time
}
#ifdef CONFIG_SYSVIPC
long
sys32
_ipc
(
u32
call
,
u32
first
,
u32
second
,
u32
third
,
compat_uptr_t
ptr
,
long
compat_sys
_ipc
(
u32
call
,
u32
first
,
u32
second
,
u32
third
,
compat_uptr_t
ptr
,
u32
fifth
)
{
int
version
;
...
...
@@ -538,7 +448,7 @@ long sys32_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr,
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sendfile
(
u32
out_fd
,
u32
in_fd
,
compat_off_t
__user
*
offset
,
u32
count
)
asmlinkage
long
compat_sys
_sendfile
(
u32
out_fd
,
u32
in_fd
,
compat_off_t
__user
*
offset
,
u32
count
)
{
mm_segment_t
old_fs
=
get_fs
();
int
ret
;
...
...
@@ -560,7 +470,7 @@ asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd, compat_off_t __user * offs
return
ret
;
}
asmlinkage
int
sys32
_sendfile64
(
int
out_fd
,
int
in_fd
,
compat_loff_t
__user
*
offset
,
s32
count
)
asmlinkage
int
compat_sys
_sendfile64
(
int
out_fd
,
int
in_fd
,
compat_loff_t
__user
*
offset
,
s32
count
)
{
mm_segment_t
old_fs
=
get_fs
();
int
ret
;
...
...
@@ -582,7 +492,7 @@ asmlinkage int sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *off
return
ret
;
}
long
sys32
_execve
(
unsigned
long
a0
,
unsigned
long
a1
,
unsigned
long
a2
,
long
compat_sys
_execve
(
unsigned
long
a0
,
unsigned
long
a1
,
unsigned
long
a2
,
unsigned
long
a3
,
unsigned
long
a4
,
unsigned
long
a5
,
struct
pt_regs
*
regs
)
{
...
...
@@ -614,7 +524,7 @@ long sys32_execve(unsigned long a0, unsigned long a1, unsigned long a2,
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_prctl
(
u32
option
,
u32
arg2
,
u32
arg3
,
u32
arg4
,
u32
arg5
)
asmlinkage
long
compat_sys
_prctl
(
u32
option
,
u32
arg2
,
u32
arg3
,
u32
arg4
,
u32
arg5
)
{
return
sys_prctl
((
int
)
option
,
(
unsigned
long
)
arg2
,
...
...
@@ -628,7 +538,7 @@ asmlinkage long sys32_prctl(u32 option, u32 arg2, u32 arg3, u32 arg4, u32 arg5)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sched_rr_get_interval
(
u32
pid
,
struct
compat_timespec
__user
*
interval
)
asmlinkage
long
compat_sys
_sched_rr_get_interval
(
u32
pid
,
struct
compat_timespec
__user
*
interval
)
{
struct
timespec
t
;
int
ret
;
...
...
@@ -643,7 +553,7 @@ asmlinkage long sys32_sched_rr_get_interval(u32 pid, struct compat_timespec __us
return
ret
;
}
asmlinkage
int
sys32
_pciconfig_read
(
u32
bus
,
u32
dfn
,
u32
off
,
u32
len
,
u32
ubuf
)
asmlinkage
int
compat_sys
_pciconfig_read
(
u32
bus
,
u32
dfn
,
u32
off
,
u32
len
,
u32
ubuf
)
{
return
sys_pciconfig_read
((
unsigned
long
)
bus
,
(
unsigned
long
)
dfn
,
...
...
@@ -652,7 +562,7 @@ asmlinkage int sys32_pciconfig_read(u32 bus, u32 dfn, u32 off, u32 len, u32 ubuf
compat_ptr
(
ubuf
));
}
asmlinkage
int
sys32
_pciconfig_write
(
u32
bus
,
u32
dfn
,
u32
off
,
u32
len
,
u32
ubuf
)
asmlinkage
int
compat_sys
_pciconfig_write
(
u32
bus
,
u32
dfn
,
u32
off
,
u32
len
,
u32
ubuf
)
{
return
sys_pciconfig_write
((
unsigned
long
)
bus
,
(
unsigned
long
)
dfn
,
...
...
@@ -661,7 +571,7 @@ asmlinkage int sys32_pciconfig_write(u32 bus, u32 dfn, u32 off, u32 len, u32 ubu
compat_ptr
(
ubuf
));
}
asmlinkage
int
sys32
_pciconfig_iobase
(
u32
which
,
u32
in_bus
,
u32
in_devfn
)
asmlinkage
int
compat_sys
_pciconfig_iobase
(
u32
which
,
u32
in_bus
,
u32
in_devfn
)
{
return
sys_pciconfig_iobase
(
which
,
in_bus
,
in_devfn
);
}
...
...
@@ -672,7 +582,7 @@ asmlinkage int sys32_pciconfig_iobase(u32 which, u32 in_bus, u32 in_devfn)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_access
(
const
char
__user
*
filename
,
u32
mode
)
asmlinkage
long
compat_sys
_access
(
const
char
__user
*
filename
,
u32
mode
)
{
return
sys_access
(
filename
,
(
int
)
mode
);
}
...
...
@@ -683,7 +593,7 @@ asmlinkage long sys32_access(const char __user * filename, u32 mode)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_creat
(
const
char
__user
*
pathname
,
u32
mode
)
asmlinkage
long
compat_sys
_creat
(
const
char
__user
*
pathname
,
u32
mode
)
{
return
sys_creat
(
pathname
,
(
int
)
mode
);
}
...
...
@@ -694,7 +604,7 @@ asmlinkage long sys32_creat(const char __user * pathname, u32 mode)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_waitpid
(
u32
pid
,
unsigned
int
__user
*
stat_addr
,
u32
options
)
asmlinkage
long
compat_sys
_waitpid
(
u32
pid
,
unsigned
int
__user
*
stat_addr
,
u32
options
)
{
return
sys_waitpid
((
int
)
pid
,
stat_addr
,
(
int
)
options
);
}
...
...
@@ -705,7 +615,7 @@ asmlinkage long sys32_waitpid(u32 pid, unsigned int __user * stat_addr, u32 opti
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_getgroups
(
u32
gidsetsize
,
gid_t
__user
*
grouplist
)
asmlinkage
long
compat_sys
_getgroups
(
u32
gidsetsize
,
gid_t
__user
*
grouplist
)
{
return
sys_getgroups
((
int
)
gidsetsize
,
grouplist
);
}
...
...
@@ -716,7 +626,7 @@ asmlinkage long sys32_getgroups(u32 gidsetsize, gid_t __user *grouplist)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_getpgid
(
u32
pid
)
asmlinkage
long
compat_sys
_getpgid
(
u32
pid
)
{
return
sys_getpgid
((
int
)
pid
);
}
...
...
@@ -728,7 +638,7 @@ asmlinkage long sys32_getpgid(u32 pid)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_getsid
(
u32
pid
)
asmlinkage
long
compat_sys
_getsid
(
u32
pid
)
{
return
sys_getsid
((
int
)
pid
);
}
...
...
@@ -739,7 +649,7 @@ asmlinkage long sys32_getsid(u32 pid)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_kill
(
u32
pid
,
u32
sig
)
asmlinkage
long
compat_sys
_kill
(
u32
pid
,
u32
sig
)
{
return
sys_kill
((
int
)
pid
,
(
int
)
sig
);
}
...
...
@@ -750,12 +660,12 @@ asmlinkage long sys32_kill(u32 pid, u32 sig)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_mkdir
(
const
char
__user
*
pathname
,
u32
mode
)
asmlinkage
long
compat_sys
_mkdir
(
const
char
__user
*
pathname
,
u32
mode
)
{
return
sys_mkdir
(
pathname
,
(
int
)
mode
);
}
long
sys32
_nice
(
u32
increment
)
long
compat_sys
_nice
(
u32
increment
)
{
/* sign extend increment */
return
sys_nice
((
int
)
increment
);
...
...
@@ -772,7 +682,7 @@ off_t ppc32_lseek(unsigned int fd, u32 offset, unsigned int origin)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_readlink
(
const
char
__user
*
path
,
char
__user
*
buf
,
u32
bufsiz
)
asmlinkage
long
compat_sys
_readlink
(
const
char
__user
*
path
,
char
__user
*
buf
,
u32
bufsiz
)
{
return
sys_readlink
(
path
,
buf
,
(
int
)
bufsiz
);
}
...
...
@@ -782,7 +692,7 @@ asmlinkage long sys32_readlink(const char __user * path, char __user * buf, u32
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sched_get_priority_max
(
u32
policy
)
asmlinkage
long
compat_sys
_sched_get_priority_max
(
u32
policy
)
{
return
sys_sched_get_priority_max
((
int
)
policy
);
}
...
...
@@ -793,7 +703,7 @@ asmlinkage long sys32_sched_get_priority_max(u32 policy)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sched_get_priority_min
(
u32
policy
)
asmlinkage
long
compat_sys
_sched_get_priority_min
(
u32
policy
)
{
return
sys_sched_get_priority_min
((
int
)
policy
);
}
...
...
@@ -804,7 +714,7 @@ asmlinkage long sys32_sched_get_priority_min(u32 policy)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sched_getparam
(
u32
pid
,
struct
sched_param
__user
*
param
)
asmlinkage
long
compat_sys
_sched_getparam
(
u32
pid
,
struct
sched_param
__user
*
param
)
{
return
sys_sched_getparam
((
int
)
pid
,
param
);
}
...
...
@@ -815,7 +725,7 @@ asmlinkage long sys32_sched_getparam(u32 pid, struct sched_param __user *param)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sched_getscheduler
(
u32
pid
)
asmlinkage
long
compat_sys
_sched_getscheduler
(
u32
pid
)
{
return
sys_sched_getscheduler
((
int
)
pid
);
}
...
...
@@ -826,7 +736,7 @@ asmlinkage long sys32_sched_getscheduler(u32 pid)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sched_setparam
(
u32
pid
,
struct
sched_param
__user
*
param
)
asmlinkage
long
compat_sys
_sched_setparam
(
u32
pid
,
struct
sched_param
__user
*
param
)
{
return
sys_sched_setparam
((
int
)
pid
,
param
);
}
...
...
@@ -837,7 +747,7 @@ asmlinkage long sys32_sched_setparam(u32 pid, struct sched_param __user *param)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_sched_setscheduler
(
u32
pid
,
u32
policy
,
struct
sched_param
__user
*
param
)
asmlinkage
long
compat_sys
_sched_setscheduler
(
u32
pid
,
u32
policy
,
struct
sched_param
__user
*
param
)
{
return
sys_sched_setscheduler
((
int
)
pid
,
(
int
)
policy
,
param
);
}
...
...
@@ -848,7 +758,7 @@ asmlinkage long sys32_sched_setscheduler(u32 pid, u32 policy, struct sched_param
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_setdomainname
(
char
__user
*
name
,
u32
len
)
asmlinkage
long
compat_sys
_setdomainname
(
char
__user
*
name
,
u32
len
)
{
return
sys_setdomainname
(
name
,
(
int
)
len
);
}
...
...
@@ -859,13 +769,13 @@ asmlinkage long sys32_setdomainname(char __user *name, u32 len)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_setgroups
(
u32
gidsetsize
,
gid_t
__user
*
grouplist
)
asmlinkage
long
compat_sys
_setgroups
(
u32
gidsetsize
,
gid_t
__user
*
grouplist
)
{
return
sys_setgroups
((
int
)
gidsetsize
,
grouplist
);
}
asmlinkage
long
sys32
_sethostname
(
char
__user
*
name
,
u32
len
)
asmlinkage
long
compat_sys
_sethostname
(
char
__user
*
name
,
u32
len
)
{
/* sign extend len */
return
sys_sethostname
(
name
,
(
int
)
len
);
...
...
@@ -877,30 +787,30 @@ asmlinkage long sys32_sethostname(char __user *name, u32 len)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_setpgid
(
u32
pid
,
u32
pgid
)
asmlinkage
long
compat_sys
_setpgid
(
u32
pid
,
u32
pgid
)
{
return
sys_setpgid
((
int
)
pid
,
(
int
)
pgid
);
}
long
sys32
_getpriority
(
u32
which
,
u32
who
)
long
compat_sys
_getpriority
(
u32
which
,
u32
who
)
{
/* sign extend which and who */
return
sys_getpriority
((
int
)
which
,
(
int
)
who
);
}
long
sys32
_setpriority
(
u32
which
,
u32
who
,
u32
niceval
)
long
compat_sys
_setpriority
(
u32
which
,
u32
who
,
u32
niceval
)
{
/* sign extend which, who and niceval */
return
sys_setpriority
((
int
)
which
,
(
int
)
who
,
(
int
)
niceval
);
}
long
sys32
_ioprio_get
(
u32
which
,
u32
who
)
long
compat_sys
_ioprio_get
(
u32
which
,
u32
who
)
{
/* sign extend which and who */
return
sys_ioprio_get
((
int
)
which
,
(
int
)
who
);
}
long
sys32
_ioprio_set
(
u32
which
,
u32
who
,
u32
ioprio
)
long
compat_sys
_ioprio_set
(
u32
which
,
u32
who
,
u32
ioprio
)
{
/* sign extend which, who and ioprio */
return
sys_ioprio_set
((
int
)
which
,
(
int
)
who
,
(
int
)
ioprio
);
...
...
@@ -911,12 +821,12 @@ long sys32_ioprio_set(u32 which, u32 who, u32 ioprio)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_ssetmask
(
u32
newmask
)
asmlinkage
long
compat_sys
_ssetmask
(
u32
newmask
)
{
return
sys_ssetmask
((
int
)
newmask
);
}
asmlinkage
long
sys32
_syslog
(
u32
type
,
char
__user
*
buf
,
u32
len
)
asmlinkage
long
compat_sys
_syslog
(
u32
type
,
char
__user
*
buf
,
u32
len
)
{
/* sign extend len */
return
sys_syslog
(
type
,
buf
,
(
int
)
len
);
...
...
@@ -928,7 +838,7 @@ asmlinkage long sys32_syslog(u32 type, char __user * buf, u32 len)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32
_umask
(
u32
mask
)
asmlinkage
long
compat_sys
_umask
(
u32
mask
)
{
return
sys_umask
((
int
)
mask
);
}
...
...
@@ -944,7 +854,7 @@ struct __sysctl_args32 {
u32
__unused
[
4
];
};
asmlinkage
long
sys32
_sysctl
(
struct
__sysctl_args32
__user
*
args
)
asmlinkage
long
compat_sys
_sysctl
(
struct
__sysctl_args32
__user
*
args
)
{
struct
__sysctl_args32
tmp
;
int
error
;
...
...
@@ -985,7 +895,7 @@ asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
}
#endif
unsigned
long
sys32
_mmap2
(
unsigned
long
addr
,
size_t
len
,
unsigned
long
compat_sys
_mmap2
(
unsigned
long
addr
,
size_t
len
,
unsigned
long
prot
,
unsigned
long
flags
,
unsigned
long
fd
,
unsigned
long
pgoff
)
{
...
...
@@ -993,29 +903,7 @@ unsigned long sys32_mmap2(unsigned long addr, size_t len,
return
sys_mmap
(
addr
,
len
,
prot
,
flags
,
fd
,
pgoff
<<
12
);
}
int
get_compat_timeval
(
struct
timeval
*
tv
,
struct
compat_timeval
__user
*
ctv
)
{
return
(
!
access_ok
(
VERIFY_READ
,
ctv
,
sizeof
(
*
ctv
))
||
__get_user
(
tv
->
tv_sec
,
&
ctv
->
tv_sec
)
||
__get_user
(
tv
->
tv_usec
,
&
ctv
->
tv_usec
))
?
-
EFAULT
:
0
;
}
asmlinkage
long
sys32_utimes
(
char
__user
*
filename
,
struct
compat_timeval
__user
*
tvs
)
{
struct
timeval
ktvs
[
2
],
*
ptr
;
ptr
=
NULL
;
if
(
tvs
)
{
if
(
get_compat_timeval
(
&
ktvs
[
0
],
&
tvs
[
0
])
||
get_compat_timeval
(
&
ktvs
[
1
],
&
tvs
[
1
]))
return
-
EFAULT
;
ptr
=
ktvs
;
}
return
do_utimes
(
filename
,
ptr
);
}
long
sys32_tgkill
(
u32
tgid
,
u32
pid
,
int
sig
)
long
compat_sys_tgkill
(
u32
tgid
,
u32
pid
,
int
sig
)
{
/* sign extend tgid, pid */
return
sys_tgkill
((
int
)
tgid
,
(
int
)
pid
,
sig
);
...
...
@@ -1026,30 +914,30 @@ long sys32_tgkill(u32 tgid, u32 pid, int sig)
* The 32 bit ABI passes long longs in an odd even register pair.
*/
compat_ssize_t
sys32
_pread64
(
unsigned
int
fd
,
char
__user
*
ubuf
,
compat_size_t
count
,
compat_ssize_t
compat_sys
_pread64
(
unsigned
int
fd
,
char
__user
*
ubuf
,
compat_size_t
count
,
u32
reg6
,
u32
poshi
,
u32
poslo
)
{
return
sys_pread64
(
fd
,
ubuf
,
count
,
((
loff_t
)
poshi
<<
32
)
|
poslo
);
}
compat_ssize_t
sys32
_pwrite64
(
unsigned
int
fd
,
char
__user
*
ubuf
,
compat_size_t
count
,
compat_ssize_t
compat_sys
_pwrite64
(
unsigned
int
fd
,
char
__user
*
ubuf
,
compat_size_t
count
,
u32
reg6
,
u32
poshi
,
u32
poslo
)
{
return
sys_pwrite64
(
fd
,
ubuf
,
count
,
((
loff_t
)
poshi
<<
32
)
|
poslo
);
}
compat_ssize_t
sys32
_readahead
(
int
fd
,
u32
r4
,
u32
offhi
,
u32
offlo
,
u32
count
)
compat_ssize_t
compat_sys
_readahead
(
int
fd
,
u32
r4
,
u32
offhi
,
u32
offlo
,
u32
count
)
{
return
sys_readahead
(
fd
,
((
loff_t
)
offhi
<<
32
)
|
offlo
,
count
);
}
asmlinkage
int
sys32
_truncate64
(
const
char
__user
*
path
,
u32
reg4
,
asmlinkage
int
compat_sys
_truncate64
(
const
char
__user
*
path
,
u32
reg4
,
unsigned
long
high
,
unsigned
long
low
)
{
return
sys_truncate
(
path
,
(
high
<<
32
)
|
low
);
}
asmlinkage
int
sys32
_ftruncate64
(
unsigned
int
fd
,
u32
reg4
,
unsigned
long
high
,
asmlinkage
int
compat_sys
_ftruncate64
(
unsigned
int
fd
,
u32
reg4
,
unsigned
long
high
,
unsigned
long
low
)
{
return
sys_ftruncate
(
fd
,
(
high
<<
32
)
|
low
);
...
...
@@ -1101,7 +989,7 @@ long ppc32_timer_create(clockid_t clock,
return
err
;
}
asmlinkage
long
sys32
_add_key
(
const
char
__user
*
_type
,
asmlinkage
long
compat_sys
_add_key
(
const
char
__user
*
_type
,
const
char
__user
*
_description
,
const
void
__user
*
_payload
,
u32
plen
,
...
...
@@ -1110,7 +998,7 @@ asmlinkage long sys32_add_key(const char __user *_type,
return
sys_add_key
(
_type
,
_description
,
_payload
,
plen
,
ringid
);
}
asmlinkage
long
sys32
_request_key
(
const
char
__user
*
_type
,
asmlinkage
long
compat_sys
_request_key
(
const
char
__user
*
_type
,
const
char
__user
*
_description
,
const
char
__user
*
_callout_info
,
u32
destringid
)
...
...
arch/powerpc/kernel/systbl.S
View file @
46aab8c5
...
...
@@ -19,15 +19,13 @@
#ifdef CONFIG_PPC64
#define SYSCALL(func) .llong .sys_##func,.sys_##func
#define SYSCALL32(func) .llong .sys_##func,.sys32_##func
#define COMPAT_SYS(func) .llong .sys_##func,.compat_sys_##func
#define PPC_SYS(func) .llong .ppc_##func,.ppc_##func
#define OLDSYS(func) .llong .sys_ni_syscall,.sys_ni_syscall
#define SYS32ONLY(func) .llong .sys_ni_syscall,.
sys32
_##func
#define SYS32ONLY(func) .llong .sys_ni_syscall,.
compat_sys
_##func
#define SYSX(f, f3264, f32) .llong .f,.f3264
#else
#define SYSCALL(func) .long sys_##func
#define SYSCALL32(func) .long sys_##func
#define COMPAT_SYS(func) .long sys_##func
#define PPC_SYS(func) .long ppc_##func
#define OLDSYS(func) .long sys_##func
...
...
@@ -50,11 +48,11 @@ SYSCALL(read)
SYSCALL
(
write
)
COMPAT_SYS
(
open
)
SYSCALL
(
close
)
SYSCALL32
(
waitpid
)
SYSCALL32
(
creat
)
COMPAT_SYS
(
waitpid
)
COMPAT_SYS
(
creat
)
SYSCALL
(
link
)
SYSCALL
(
unlink
)
SYSCALL32
(
execve
)
COMPAT_SYS
(
execve
)
SYSCALL
(
chdir
)
SYSX
(
sys64_time
,
compat_sys_time
,
sys_time
)
SYSCALL
(
mknod
)
...
...
@@ -69,20 +67,20 @@ SYSX(sys_ni_syscall,sys_oldumount,sys_oldumount)
SYSCALL
(
setuid
)
SYSCALL
(
getuid
)
COMPAT_SYS
(
stime
)
SYSCALL32
(
ptrace
)
COMPAT_SYS
(
ptrace
)
SYSCALL
(
alarm
)
OLDSYS
(
fstat
)
SYSCALL32
(
pause
)
COMPAT_SYS
(
pause
)
COMPAT_SYS
(
utime
)
SYSCALL
(
ni_syscall
)
SYSCALL
(
ni_syscall
)
SYSCALL32
(
access
)
SYSCALL32
(
nice
)
COMPAT_SYS
(
access
)
COMPAT_SYS
(
nice
)
SYSCALL
(
ni_syscall
)
SYSCALL
(
sync
)
SYSCALL32
(
kill
)
COMPAT_SYS
(
kill
)
SYSCALL
(
rename
)
SYSCALL32
(
mkdir
)
COMPAT_SYS
(
mkdir
)
SYSCALL
(
rmdir
)
SYSCALL
(
dup
)
SYSCALL
(
pipe
)
...
...
@@ -100,10 +98,10 @@ SYSCALL(ni_syscall)
COMPAT_SYS
(
ioctl
)
COMPAT_SYS
(
fcntl
)
SYSCALL
(
ni_syscall
)
SYSCALL32
(
setpgid
)
COMPAT_SYS
(
setpgid
)
SYSCALL
(
ni_syscall
)
SYSX
(
sys_ni_syscall
,
sys_olduname
,
sys_olduname
)
SYSCALL32
(
umask
)
COMPAT_SYS
(
umask
)
SYSCALL
(
chroot
)
SYSCALL
(
ustat
)
SYSCALL
(
dup2
)
...
...
@@ -112,23 +110,23 @@ SYSCALL(getpgrp)
SYSCALL
(
setsid
)
SYS32ONLY
(
sigaction
)
SYSCALL
(
sgetmask
)
SYSCALL32
(
ssetmask
)
COMPAT_SYS
(
ssetmask
)
SYSCALL
(
setreuid
)
SYSCALL
(
setregid
)
SYSX
(
sys_ni_syscall
,
ppc32_sigsuspend
,
ppc_sigsuspend
)
COMPAT_SYS
(
sigpending
)
SYSCALL32
(
sethostname
)
COMPAT_SYS
(
sethostname
)
COMPAT_SYS
(
setrlimit
)
COMPAT_SYS
(
old_getrlimit
)
COMPAT_SYS
(
getrusage
)
SYSCALL32
(
gettimeofday
)
SYSCALL32
(
settimeofday
)
SYSCALL32
(
getgroups
)
SYSCALL32
(
setgroups
)
COMPAT_SYS
(
gettimeofday
)
COMPAT_SYS
(
settimeofday
)
COMPAT_SYS
(
getgroups
)
COMPAT_SYS
(
setgroups
)
SYSX
(
sys_ni_syscall
,
sys_ni_syscall
,
ppc_select
)
SYSCALL
(
symlink
)
OLDSYS
(
lstat
)
SYSCALL32
(
readlink
)
COMPAT_SYS
(
readlink
)
SYSCALL
(
uselib
)
SYSCALL
(
swapon
)
SYSCALL
(
reboot
)
...
...
@@ -139,14 +137,14 @@ SYSCALL(truncate)
SYSCALL
(
ftruncate
)
SYSCALL
(
fchmod
)
SYSCALL
(
fchown
)
SYSCALL32
(
getpriority
)
SYSCALL32
(
setpriority
)
COMPAT_SYS
(
getpriority
)
COMPAT_SYS
(
setpriority
)
SYSCALL
(
ni_syscall
)
COMPAT_SYS
(
statfs
)
COMPAT_SYS
(
fstatfs
)
SYSCALL
(
ni_syscall
)
COMPAT_SYS
(
socketcall
)
SYSCALL32
(
syslog
)
COMPAT_SYS
(
syslog
)
COMPAT_SYS
(
setitimer
)
COMPAT_SYS
(
getitimer
)
COMPAT_SYS
(
newstat
)
...
...
@@ -159,15 +157,15 @@ SYSCALL(ni_syscall)
SYSCALL
(
ni_syscall
)
COMPAT_SYS
(
wait4
)
SYSCALL
(
swapoff
)
SYSCALL32
(
sysinfo
)
SYSCALL32
(
ipc
)
COMPAT_SYS
(
sysinfo
)
COMPAT_SYS
(
ipc
)
SYSCALL
(
fsync
)
SYSX
(
sys_ni_syscall
,
ppc32_sigreturn
,
sys_sigreturn
)
PPC_SYS
(
clone
)
SYSCALL32
(
setdomainname
)
COMPAT_SYS
(
setdomainname
)
PPC_SYS
(
newuname
)
SYSCALL
(
ni_syscall
)
SYSCALL32
(
adjtimex
)
COMPAT_SYS
(
adjtimex
)
SYSCALL
(
mprotect
)
SYSX
(
sys_ni_syscall
,
compat_sys_sigprocmask
,
sys_sigprocmask
)
SYSCALL
(
ni_syscall
)
...
...
@@ -175,36 +173,36 @@ SYSCALL(init_module)
SYSCALL
(
delete_module
)
SYSCALL
(
ni_syscall
)
SYSCALL
(
quotactl
)
SYSCALL32
(
getpgid
)
COMPAT_SYS
(
getpgid
)
SYSCALL
(
fchdir
)
SYSCALL
(
bdflush
)
SYSCALL32
(
sysfs
)
COMPAT_SYS
(
sysfs
)
SYSX
(
ppc64_personality
,
ppc64_personality
,
sys_personality
)
SYSCALL
(
ni_syscall
)
SYSCALL
(
setfsuid
)
SYSCALL
(
setfsgid
)
SYSCALL
(
llseek
)
SYSCALL32
(
getdents
)
COMPAT_SYS
(
getdents
)
SYSX
(
sys_select
,
ppc32_select
,
ppc_select
)
SYSCALL
(
flock
)
SYSCALL
(
msync
)
COMPAT_SYS
(
readv
)
COMPAT_SYS
(
writev
)
SYSCALL32
(
getsid
)
COMPAT_SYS
(
getsid
)
SYSCALL
(
fdatasync
)
SYSCALL32
(
sysctl
)
COMPAT_SYS
(
sysctl
)
SYSCALL
(
mlock
)
SYSCALL
(
munlock
)
SYSCALL
(
mlockall
)
SYSCALL
(
munlockall
)
SYSCALL32
(
sched_setparam
)
SYSCALL32
(
sched_getparam
)
SYSCALL32
(
sched_setscheduler
)
SYSCALL32
(
sched_getscheduler
)
COMPAT_SYS
(
sched_setparam
)
COMPAT_SYS
(
sched_getparam
)
COMPAT_SYS
(
sched_setscheduler
)
COMPAT_SYS
(
sched_getscheduler
)
SYSCALL
(
sched_yield
)
SYSCALL32
(
sched_get_priority_max
)
SYSCALL32
(
sched_get_priority_min
)
SYSCALL32
(
sched_rr_get_interval
)
COMPAT_SYS
(
sched_get_priority_max
)
COMPAT_SYS
(
sched_get_priority_min
)
COMPAT_SYS
(
sched_rr_get_interval
)
COMPAT_SYS
(
nanosleep
)
SYSCALL
(
mremap
)
SYSCALL
(
setresuid
)
...
...
@@ -214,36 +212,36 @@ SYSCALL(poll)
COMPAT_SYS
(
nfsservctl
)
SYSCALL
(
setresgid
)
SYSCALL
(
getresgid
)
SYSCALL32
(
prctl
)
COMPAT_SYS
(
prctl
)
SYSX
(
ppc64_rt_sigreturn
,
ppc32_rt_sigreturn
,
sys_rt_sigreturn
)
SYSCALL32
(
rt_sigaction
)
SYSCALL32
(
rt_sigprocmask
)
SYSCALL32
(
rt_sigpending
)
COMPAT_SYS
(
rt_sigaction
)
COMPAT_SYS
(
rt_sigprocmask
)
COMPAT_SYS
(
rt_sigpending
)
COMPAT_SYS
(
rt_sigtimedwait
)
SYSCALL32
(
rt_sigqueueinfo
)
COMPAT_SYS
(
rt_sigqueueinfo
)
SYSX
(
ppc64_rt_sigsuspend
,
ppc32_rt_sigsuspend
,
ppc_rt_sigsuspend
)
SYSCALL32
(
pread64
)
SYSCALL32
(
pwrite64
)
COMPAT_SYS
(
pread64
)
COMPAT_SYS
(
pwrite64
)
SYSCALL
(
chown
)
SYSCALL
(
getcwd
)
SYSCALL
(
capget
)
SYSCALL
(
capset
)
SYSCALL32
(
sigaltstack
)
SYSX
(
sys_sendfile64
,
sys32
_sendfile
,
sys_sendfile
)
COMPAT_SYS
(
sigaltstack
)
SYSX
(
sys_sendfile64
,
compat_sys
_sendfile
,
sys_sendfile
)
SYSCALL
(
ni_syscall
)
SYSCALL
(
ni_syscall
)
PPC_SYS
(
vfork
)
COMPAT_SYS
(
getrlimit
)
SYSCALL32
(
readahead
)
COMPAT_SYS
(
readahead
)
SYS32ONLY
(
mmap2
)
SYS32ONLY
(
truncate64
)
SYS32ONLY
(
ftruncate64
)
SYSX
(
sys_ni_syscall
,
sys_stat64
,
sys_stat64
)
SYSX
(
sys_ni_syscall
,
sys_lstat64
,
sys_lstat64
)
SYSX
(
sys_ni_syscall
,
sys_fstat64
,
sys_fstat64
)
SYSCALL32
(
pciconfig_read
)
SYSCALL32
(
pciconfig_write
)
SYSCALL32
(
pciconfig_iobase
)
COMPAT_SYS
(
pciconfig_read
)
COMPAT_SYS
(
pciconfig_write
)
COMPAT_SYS
(
pciconfig_iobase
)
SYSCALL
(
ni_syscall
)
SYSCALL
(
getdents64
)
SYSCALL
(
pivot_root
)
...
...
@@ -293,8 +291,8 @@ COMPAT_SYS(clock_gettime)
COMPAT_SYS
(
clock_getres
)
COMPAT_SYS
(
clock_nanosleep
)
SYSX
(
ppc64_swapcontext
,
ppc32_swapcontext
,
ppc_swapcontext
)
SYSCALL32
(
tgkill
)
SYSCALL32
(
utimes
)
COMPAT_SYS
(
tgkill
)
COMPAT_SYS
(
utimes
)
COMPAT_SYS
(
statfs64
)
COMPAT_SYS
(
fstatfs64
)
SYSX
(
sys_ni_syscall
,
ppc_fadvise64_64
,
ppc_fadvise64_64
)
...
...
@@ -312,12 +310,12 @@ COMPAT_SYS(mq_timedreceive)
COMPAT_SYS
(
mq_notify
)
COMPAT_SYS
(
mq_getsetattr
)
COMPAT_SYS
(
kexec_load
)
SYSCALL32
(
add_key
)
SYSCALL32
(
request_key
)
COMPAT_SYS
(
add_key
)
COMPAT_SYS
(
request_key
)
COMPAT_SYS
(
keyctl
)
COMPAT_SYS
(
waitid
)
SYSCALL32
(
ioprio_set
)
SYSCALL32
(
ioprio_get
)
COMPAT_SYS
(
ioprio_set
)
COMPAT_SYS
(
ioprio_get
)
SYSCALL
(
inotify_init
)
SYSCALL
(
inotify_add_watch
)
SYSCALL
(
inotify_rm_watch
)
arch/ppc64/kernel/entry.S
View file @
46aab8c5
...
...
@@ -265,7 +265,7 @@ _GLOBAL(save_nvgprs)
*/
_GLOBAL
(
ppc32_sigsuspend
)
bl
.
save_nvgprs
bl
.
sys32
_sigsuspend
bl
.
compat_sys
_sigsuspend
b
70
f
_GLOBAL
(
ppc64_rt_sigsuspend
)
...
...
@@ -275,7 +275,7 @@ _GLOBAL(ppc64_rt_sigsuspend)
_GLOBAL
(
ppc32_rt_sigsuspend
)
bl
.
save_nvgprs
bl
.
sys32
_rt_sigsuspend
bl
.
compat_sys
_rt_sigsuspend
70
:
cmpdi
0
,
r3
,
0
/
*
If
it
returned
an
error
,
we
need
to
return
via
syscall_exit
to
set
the
SO
bit
in
cr0
and
potentially
stop
for
ptrace
.
*/
...
...
@@ -310,7 +310,7 @@ _GLOBAL(ppc_clone)
_GLOBAL
(
ppc32_swapcontext
)
bl
.
save_nvgprs
bl
.
sys32
_swapcontext
bl
.
compat_sys
_swapcontext
b
80
f
_GLOBAL
(
ppc64_swapcontext
)
...
...
@@ -319,11 +319,11 @@ _GLOBAL(ppc64_swapcontext)
b
80
f
_GLOBAL
(
ppc32_sigreturn
)
bl
.
sys32
_sigreturn
bl
.
compat_sys
_sigreturn
b
80
f
_GLOBAL
(
ppc32_rt_sigreturn
)
bl
.
sys32
_rt_sigreturn
bl
.
compat_sys
_rt_sigreturn
b
80
f
_GLOBAL
(
ppc64_rt_sigreturn
)
...
...
arch/ppc64/kernel/misc.S
View file @
46aab8c5
...
...
@@ -928,11 +928,11 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys_write
.
llong
.
compat_sys_open
/*
5
*/
.
llong
.
sys_close
.
llong
.
sys32
_waitpid
.
llong
.
sys32
_creat
.
llong
.
compat_sys
_waitpid
.
llong
.
compat_sys
_creat
.
llong
.
sys_link
.
llong
.
sys_unlink
/*
10
*/
.
llong
.
sys32
_execve
.
llong
.
compat_sys
_execve
.
llong
.
sys_chdir
.
llong
.
compat_sys_time
.
llong
.
sys_mknod
...
...
@@ -947,20 +947,20 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys_setuid
.
llong
.
sys_getuid
.
llong
.
compat_sys_stime
/*
25
*/
.
llong
.
sys32
_ptrace
.
llong
.
compat_sys
_ptrace
.
llong
.
sys_alarm
.
llong
.
sys_ni_syscall
/*
old
fstat
syscall
*/
.
llong
.
sys32
_pause
.
llong
.
compat_sys
_pause
.
llong
.
compat_sys_utime
/*
30
*/
.
llong
.
sys_ni_syscall
/*
old
stty
syscall
*/
.
llong
.
sys_ni_syscall
/*
old
gtty
syscall
*/
.
llong
.
sys32
_access
.
llong
.
sys32
_nice
.
llong
.
compat_sys
_access
.
llong
.
compat_sys
_nice
.
llong
.
sys_ni_syscall
/*
35
-
old
ftime
syscall
*/
.
llong
.
sys_sync
.
llong
.
sys32
_kill
.
llong
.
compat_sys
_kill
.
llong
.
sys_rename
.
llong
.
sys32
_mkdir
.
llong
.
compat_sys
_mkdir
.
llong
.
sys_rmdir
/*
40
*/
.
llong
.
sys_dup
.
llong
.
sys_pipe
...
...
@@ -978,35 +978,35 @@ _GLOBAL(sys_call_table32)
.
llong
.
compat_sys_ioctl
.
llong
.
compat_sys_fcntl
/*
55
*/
.
llong
.
sys_ni_syscall
/*
old
mpx
syscall
*/
.
llong
.
sys32
_setpgid
.
llong
.
compat_sys
_setpgid
.
llong
.
sys_ni_syscall
/*
old
ulimit
syscall
*/
.
llong
.
sys_olduname
.
llong
.
sys32
_umask
/*
60
*/
.
llong
.
compat_sys
_umask
/*
60
*/
.
llong
.
sys_chroot
.
llong
.
sys_ustat
.
llong
.
sys_dup2
.
llong
.
sys_getppid
.
llong
.
sys_getpgrp
/*
65
*/
.
llong
.
sys_setsid
.
llong
.
sys32
_sigaction
.
llong
.
compat_sys
_sigaction
.
llong
.
sys_sgetmask
.
llong
.
sys32
_ssetmask
.
llong
.
compat_sys
_ssetmask
.
llong
.
sys_setreuid
/*
70
*/
.
llong
.
sys_setregid
.
llong
.
ppc32_sigsuspend
.
llong
.
compat_sys_sigpending
.
llong
.
sys32
_sethostname
.
llong
.
compat_sys
_sethostname
.
llong
.
compat_sys_setrlimit
/*
75
*/
.
llong
.
compat_sys_old_getrlimit
.
llong
.
compat_sys_getrusage
.
llong
.
sys32
_gettimeofday
.
llong
.
sys32
_settimeofday
.
llong
.
sys32
_getgroups
/*
80
*/
.
llong
.
sys32
_setgroups
.
llong
.
compat_sys
_gettimeofday
.
llong
.
compat_sys
_settimeofday
.
llong
.
compat_sys
_getgroups
/*
80
*/
.
llong
.
compat_sys
_setgroups
.
llong
.
sys_ni_syscall
/*
old
select
syscall
*/
.
llong
.
sys_symlink
.
llong
.
sys_ni_syscall
/*
old
lstat
syscall
*/
.
llong
.
sys32
_readlink
/*
85
*/
.
llong
.
compat_sys
_readlink
/*
85
*/
.
llong
.
sys_uselib
.
llong
.
sys_swapon
.
llong
.
sys_reboot
...
...
@@ -1017,14 +1017,14 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys_ftruncate
.
llong
.
sys_fchmod
.
llong
.
sys_fchown
/*
95
*/
.
llong
.
sys32
_getpriority
.
llong
.
sys32
_setpriority
.
llong
.
compat_sys
_getpriority
.
llong
.
compat_sys
_setpriority
.
llong
.
sys_ni_syscall
/*
old
profil
syscall
*/
.
llong
.
compat_sys_statfs
.
llong
.
compat_sys_fstatfs
/*
100
*/
.
llong
.
sys_ni_syscall
/*
old
ioperm
syscall
*/
.
llong
.
compat_sys_socketcall
.
llong
.
sys32
_syslog
.
llong
.
compat_sys
_syslog
.
llong
.
compat_sys_setitimer
.
llong
.
compat_sys_getitimer
/*
105
*/
.
llong
.
compat_sys_newstat
...
...
@@ -1037,15 +1037,15 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys_ni_syscall
/*
old
vm86
syscall
*/
.
llong
.
compat_sys_wait4
.
llong
.
sys_swapoff
/*
115
*/
.
llong
.
sys32
_sysinfo
.
llong
.
sys32
_ipc
.
llong
.
compat_sys
_sysinfo
.
llong
.
compat_sys
_ipc
.
llong
.
sys_fsync
.
llong
.
ppc32_sigreturn
.
llong
.
ppc_clone
/*
120
*/
.
llong
.
sys32
_setdomainname
.
llong
.
compat_sys
_setdomainname
.
llong
.
ppc_newuname
.
llong
.
sys_ni_syscall
/*
old
modify_ldt
syscall
*/
.
llong
.
sys32
_adjtimex
.
llong
.
compat_sys
_adjtimex
.
llong
.
sys_mprotect
/*
125
*/
.
llong
.
compat_sys_sigprocmask
.
llong
.
sys_ni_syscall
/*
old
create_module
syscall
*/
...
...
@@ -1053,36 +1053,36 @@ _GLOBAL(sys_call_table32)
.
llong
.
sys_delete_module
.
llong
.
sys_ni_syscall
/*
130
old
get_kernel_syms
syscall
*/
.
llong
.
sys_quotactl
.
llong
.
sys32
_getpgid
.
llong
.
compat_sys
_getpgid
.
llong
.
sys_fchdir
.
llong
.
sys_bdflush
.
llong
.
sys32
_sysfs
/*
135
*/
.
llong
.
compat_sys
_sysfs
/*
135
*/
.
llong
.
ppc64_personality
.
llong
.
sys_ni_syscall
/*
for
afs_syscall
*/
.
llong
.
sys_setfsuid
.
llong
.
sys_setfsgid
.
llong
.
sys_llseek
/*
140
*/
.
llong
.
sys32
_getdents
.
llong
.
compat_sys
_getdents
.
llong
.
ppc32_select
.
llong
.
sys_flock
.
llong
.
sys_msync
.
llong
.
compat_sys_readv
/*
145
*/
.
llong
.
compat_sys_writev
.
llong
.
sys32
_getsid
.
llong
.
compat_sys
_getsid
.
llong
.
sys_fdatasync
.
llong
.
sys32
_sysctl
.
llong
.
compat_sys
_sysctl
.
llong
.
sys_mlock
/*
150
*/
.
llong
.
sys_munlock
.
llong
.
sys_mlockall
.
llong
.
sys_munlockall
.
llong
.
sys32
_sched_setparam
.
llong
.
sys32
_sched_getparam
/*
155
*/
.
llong
.
sys32
_sched_setscheduler
.
llong
.
sys32
_sched_getscheduler
.
llong
.
compat_sys
_sched_setparam
.
llong
.
compat_sys
_sched_getparam
/*
155
*/
.
llong
.
compat_sys
_sched_setscheduler
.
llong
.
compat_sys
_sched_getscheduler
.
llong
.
sys_sched_yield
.
llong
.
sys32
_sched_get_priority_max
.
llong
.
sys32
_sched_get_priority_min
/*
160
*/
.
llong
.
sys32
_sched_rr_get_interval
.
llong
.
compat_sys
_sched_get_priority_max
.
llong
.
compat_sys
_sched_get_priority_min
/*
160
*/
.
llong
.
compat_sys
_sched_rr_get_interval
.
llong
.
compat_sys_nanosleep
.
llong
.
sys_mremap
.
llong
.
sys_setresuid
...
...
@@ -1092,36 +1092,36 @@ _GLOBAL(sys_call_table32)
.
llong
.
compat_sys_nfsservctl
.
llong
.
sys_setresgid
.
llong
.
sys_getresgid
/*
170
*/
.
llong
.
sys32
_prctl
.
llong
.
compat_sys
_prctl
.
llong
.
ppc32_rt_sigreturn
.
llong
.
sys32
_rt_sigaction
.
llong
.
sys32
_rt_sigprocmask
.
llong
.
sys32
_rt_sigpending
/*
175
*/
.
llong
.
compat_sys
_rt_sigaction
.
llong
.
compat_sys
_rt_sigprocmask
.
llong
.
compat_sys
_rt_sigpending
/*
175
*/
.
llong
.
compat_sys_rt_sigtimedwait
.
llong
.
sys32
_rt_sigqueueinfo
.
llong
.
compat_sys
_rt_sigqueueinfo
.
llong
.
ppc32_rt_sigsuspend
.
llong
.
sys32
_pread64
.
llong
.
sys32
_pwrite64
/*
180
*/
.
llong
.
compat_sys
_pread64
.
llong
.
compat_sys
_pwrite64
/*
180
*/
.
llong
.
sys_chown
.
llong
.
sys_getcwd
.
llong
.
sys_capget
.
llong
.
sys_capset
.
llong
.
sys32
_sigaltstack
/*
185
*/
.
llong
.
sys32
_sendfile
.
llong
.
compat_sys
_sigaltstack
/*
185
*/
.
llong
.
compat_sys
_sendfile
.
llong
.
sys_ni_syscall
/*
reserved
for
streams1
*/
.
llong
.
sys_ni_syscall
/*
reserved
for
streams2
*/
.
llong
.
ppc_vfork
.
llong
.
compat_sys_getrlimit
/*
190
*/
.
llong
.
sys32
_readahead
.
llong
.
sys32
_mmap2
.
llong
.
sys32
_truncate64
.
llong
.
sys32
_ftruncate64
.
llong
.
compat_sys
_readahead
.
llong
.
compat_sys
_mmap2
.
llong
.
compat_sys
_truncate64
.
llong
.
compat_sys
_ftruncate64
.
llong
.
sys_stat64
/*
195
*/
.
llong
.
sys_lstat64
.
llong
.
sys_fstat64
.
llong
.
sys32
_pciconfig_read
.
llong
.
sys32
_pciconfig_write
.
llong
.
sys32
_pciconfig_iobase
/*
200
-
pciconfig_iobase
*/
.
llong
.
compat_sys
_pciconfig_read
.
llong
.
compat_sys
_pciconfig_write
.
llong
.
compat_sys
_pciconfig_iobase
/*
200
-
pciconfig_iobase
*/
.
llong
.
sys_ni_syscall
/*
reserved
for
MacOnLinux
*/
.
llong
.
sys_getdents64
.
llong
.
sys_pivot_root
...
...
@@ -1147,7 +1147,7 @@ _GLOBAL(sys_call_table32)
.
llong
.
compat_sys_sched_getaffinity
.
llong
.
sys_ni_syscall
.
llong
.
sys_ni_syscall
/*
225
-
reserved
for
tux
*/
.
llong
.
sys32
_sendfile64
.
llong
.
compat_sys
_sendfile64
.
llong
.
compat_sys_io_setup
.
llong
.
sys_io_destroy
.
llong
.
compat_sys_io_getevents
...
...
@@ -1171,8 +1171,8 @@ _GLOBAL(sys_call_table32)
.
llong
.
compat_sys_clock_getres
.
llong
.
compat_sys_clock_nanosleep
.
llong
.
ppc32_swapcontext
.
llong
.
sys32
_tgkill
/*
250
*/
.
llong
.
sys32
_utimes
.
llong
.
compat_sys
_tgkill
/*
250
*/
.
llong
.
compat_sys
_utimes
.
llong
.
compat_sys_statfs64
.
llong
.
compat_sys_fstatfs64
.
llong
.
ppc_fadvise64_64
/*
32
bit
only
fadvise64_64
*/
...
...
@@ -1190,12 +1190,12 @@ _GLOBAL(sys_call_table32)
.
llong
.
compat_sys_mq_notify
.
llong
.
compat_sys_mq_getsetattr
.
llong
.
compat_sys_kexec_load
.
llong
.
sys32
_add_key
.
llong
.
sys32
_request_key
/*
270
*/
.
llong
.
compat_sys
_add_key
.
llong
.
compat_sys
_request_key
/*
270
*/
.
llong
.
compat_sys_keyctl
.
llong
.
compat_sys_waitid
.
llong
.
sys32
_ioprio_set
.
llong
.
sys32
_ioprio_get
.
llong
.
compat_sys
_ioprio_set
.
llong
.
compat_sys
_ioprio_get
.
llong
.
sys_inotify_init
/*
275
*/
.
llong
.
sys_inotify_add_watch
.
llong
.
sys_inotify_rm_watch
...
...
arch/ppc64/kernel/ptrace32.c
View file @
46aab8c5
...
...
@@ -40,7 +40,7 @@
* in exit.c or in signal.c.
*/
int
sys32
_ptrace
(
long
request
,
long
pid
,
unsigned
long
addr
,
unsigned
long
data
)
int
compat_sys
_ptrace
(
long
request
,
long
pid
,
unsigned
long
addr
,
unsigned
long
data
)
{
struct
task_struct
*
child
;
int
ret
=
-
EPERM
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment