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
nexedi
linux
Commits
f43a64c5
Commit
f43a64c5
authored
Jul 11, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
parents
5c23804a
f7ceba36
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
111 additions
and
97 deletions
+111
-97
arch/sparc/kernel/systbls.S
arch/sparc/kernel/systbls.S
+2
-2
arch/sparc64/Kconfig
arch/sparc64/Kconfig
+17
-0
arch/sparc64/kernel/entry.S
arch/sparc64/kernel/entry.S
+14
-28
arch/sparc64/kernel/power.c
arch/sparc64/kernel/power.c
+2
-1
arch/sparc64/kernel/ptrace.c
arch/sparc64/kernel/ptrace.c
+34
-12
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/smp.c
+5
-5
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/sparc64_ksyms.c
+1
-1
arch/sparc64/kernel/sys32.S
arch/sparc64/kernel/sys32.S
+2
-0
arch/sparc64/kernel/systbls.S
arch/sparc64/kernel/systbls.S
+4
-4
arch/sparc64/kernel/time.c
arch/sparc64/kernel/time.c
+9
-15
arch/sparc64/kernel/vmlinux.lds.S
arch/sparc64/kernel/vmlinux.lds.S
+2
-0
arch/sparc64/mm/fault.c
arch/sparc64/mm/fault.c
+0
-16
arch/sparc64/solaris/entry64.S
arch/sparc64/solaris/entry64.S
+5
-2
include/asm-sparc/unistd.h
include/asm-sparc/unistd.h
+2
-2
include/asm-sparc64/thread_info.h
include/asm-sparc64/thread_info.h
+7
-4
include/asm-sparc64/unistd.h
include/asm-sparc64/unistd.h
+2
-2
include/linux/audit.h
include/linux/audit.h
+1
-1
include/linux/cache.h
include/linux/cache.h
+1
-1
init/Kconfig
init/Kconfig
+1
-1
No files found.
arch/sparc/kernel/systbls.S
View file @
f43a64c5
...
...
@@ -57,11 +57,11 @@ sys_call_table:
/*
180
*/
.
long
sys_flistxattr
,
sys_removexattr
,
sys_lremovexattr
,
sys_sigpending
,
sys_ni_syscall
/*
185
*/
.
long
sys_setpgid
,
sys_fremovexattr
,
sys_tkill
,
sys_exit_group
,
sys_newuname
/*
190
*/
.
long
sys_init_module
,
sys_personality
,
sparc_remap_file_pages
,
sys_epoll_create
,
sys_epoll_ctl
/*
195
*/
.
long
sys_epoll_wait
,
sys_
nis_syscall
,
sys_getppid
,
sparc_sigaction
,
sys_sgetmask
/*
195
*/
.
long
sys_epoll_wait
,
sys_
ioprio_set
,
sys_getppid
,
sparc_sigaction
,
sys_sgetmask
/*
200
*/
.
long
sys_ssetmask
,
sys_sigsuspend
,
sys_newlstat
,
sys_uselib
,
old_readdir
/*
205
*/
.
long
sys_readahead
,
sys_socketcall
,
sys_syslog
,
sys_lookup_dcookie
,
sys_fadvise64
/*
210
*/
.
long
sys_fadvise64_64
,
sys_tgkill
,
sys_waitpid
,
sys_swapoff
,
sys_sysinfo
/*
215
*/
.
long
sys_ipc
,
sys_sigreturn
,
sys_clone
,
sys_
nis_syscall
,
sys_adjtimex
/*
215
*/
.
long
sys_ipc
,
sys_sigreturn
,
sys_clone
,
sys_
ioprio_get
,
sys_adjtimex
/*
220
*/
.
long
sys_sigprocmask
,
sys_ni_syscall
,
sys_delete_module
,
sys_ni_syscall
,
sys_getpgid
/*
225
*/
.
long
sys_bdflush
,
sys_sysfs
,
sys_nis_syscall
,
sys_setfsuid16
,
sys_setfsgid16
/*
230
*/
.
long
sys_select
,
sys_time
,
sys_nis_syscall
,
sys_stime
,
sys_statfs64
...
...
arch/sparc64/Kconfig
View file @
f43a64c5
...
...
@@ -43,6 +43,23 @@ config SPARC64_PAGE_SIZE_4MB
endchoice
config SECCOMP
bool "Enable seccomp to safely compute untrusted bytecode"
depends on PROC_FS
default y
help
This kernel feature is useful for number crunching applications
that may need to compute untrusted bytecode during their
execution. By using pipes or other transports made available to
the process as file descriptors supporting the read/write
syscalls, it's possible to isolate those applications in
their own address space using seccomp. Once seccomp is
enabled via /proc/<pid>/seccomp, it cannot be disabled
and the task is only allowed to execute a few safe syscalls
defined by each seccomp mode.
If unsure, say Y. Only embedded should say N here.
source kernel/Kconfig.hz
source "init/Kconfig"
...
...
arch/sparc64/kernel/entry.S
View file @
f43a64c5
...
...
@@ -22,8 +22,6 @@
#include <asm/estate.h>
#include <asm/auxio.h>
/*
#
define
SYSCALL_TRACING
1
*/
#define curptr g6
#define NR_SYSCALLS 284 /* Each OS is different... */
...
...
@@ -1554,11 +1552,12 @@ sys_ptrace: add %sp, PTREGS_OFF, %o0
nop
.
align
32
1
:
ldx
[%
curptr
+
TI_FLAGS
],
%
l5
andcc
%
l5
,
_TIF_SYSCALL_TRACE
,
%
g0
andcc
%
l5
,
(
_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT
)
,
%
g0
be
,
pt
%
icc
,
rtrap
clr
%
l6
add
%
sp
,
PTREGS_OFF
,
%
o0
call
syscall_trace
nop
mov
1
,
%
o1
ba
,
pt
%
xcc
,
rtrap
clr
%
l6
...
...
@@ -1642,18 +1641,20 @@ linux_sparc_ni_syscall:
or
%
l7
,
%
lo
(
sys_ni_syscall
),
%
l7
linux_syscall_trace32
:
add
%
sp
,
PTREGS_OFF
,
%
o0
call
syscall_trace
nop
clr
%
o1
srl
%
i0
,
0
,
%
o0
mov
%
i4
,
%
o4
srl
%
i4
,
0
,
%
o4
srl
%
i1
,
0
,
%
o1
srl
%
i2
,
0
,
%
o2
b
,
pt
%
xcc
,
2
f
srl
%
i3
,
0
,
%
o3
linux_syscall_trace
:
add
%
sp
,
PTREGS_OFF
,
%
o0
call
syscall_trace
nop
clr
%
o1
mov
%
i0
,
%
o0
mov
%
i1
,
%
o1
mov
%
i2
,
%
o2
...
...
@@ -1671,11 +1672,6 @@ linux_sparc_syscall32:
bgeu
,
pn
%
xcc
,
linux_sparc_ni_syscall
!
CTI
srl
%
i0
,
0
,
%
o0
!
IEU0
sll
%
g1
,
2
,
%
l4
!
IEU0
Group
#ifdef SYSCALL_TRACING
call
syscall_trace_entry
add
%
sp
,
PTREGS_OFF
,
%
o0
srl
%
i0
,
0
,
%
o0
#endif
srl
%
i4
,
0
,
%
o4
!
IEU1
lduw
[%
l7
+
%
l4
],
%
l7
!
Load
srl
%
i1
,
0
,
%
o1
!
IEU0
Group
...
...
@@ -1683,7 +1679,7 @@ linux_sparc_syscall32:
srl
%
i5
,
0
,
%
o5
!
IEU1
srl
%
i2
,
0
,
%
o2
!
IEU0
Group
andcc
%
l0
,
_TIF_SYSCALL_TRACE
,
%
g0
!
IEU0
Group
andcc
%
l0
,
(
_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT
),
%
g0
bne
,
pn
%
icc
,
linux_syscall_trace32
!
CTI
mov
%
i0
,
%
l5
!
IEU1
call
%
l7
!
CTI
Group
brk
forced
...
...
@@ -1699,11 +1695,6 @@ linux_sparc_syscall:
bgeu
,
pn
%
xcc
,
linux_sparc_ni_syscall
!
CTI
mov
%
i0
,
%
o0
!
IEU0
sll
%
g1
,
2
,
%
l4
!
IEU0
Group
#ifdef SYSCALL_TRACING
call
syscall_trace_entry
add
%
sp
,
PTREGS_OFF
,
%
o0
mov
%
i0
,
%
o0
#endif
mov
%
i1
,
%
o1
!
IEU1
lduw
[%
l7
+
%
l4
],
%
l7
!
Load
4
:
mov
%
i2
,
%
o2
!
IEU0
Group
...
...
@@ -1711,7 +1702,7 @@ linux_sparc_syscall:
mov
%
i3
,
%
o3
!
IEU1
mov
%
i4
,
%
o4
!
IEU0
Group
andcc
%
l0
,
_TIF_SYSCALL_TRACE
,
%
g0
!
IEU1
Group
+
1
bubble
andcc
%
l0
,
(
_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT
),
%
g0
bne
,
pn
%
icc
,
linux_syscall_trace
!
CTI
Group
mov
%
i0
,
%
l5
!
IEU0
2
:
call
%
l7
!
CTI
Group
brk
forced
...
...
@@ -1720,12 +1711,6 @@ linux_sparc_syscall:
3
:
stx
%
o0
,
[%
sp
+
PTREGS_OFF
+
PT_V9_I0
]
ret_sys_call
:
#ifdef SYSCALL_TRACING
mov
%
o0
,
%
o1
call
syscall_trace_exit
add
%
sp
,
PTREGS_OFF
,
%
o0
mov
%
o1
,
%
o0
#endif
ldx
[%
sp
+
PTREGS_OFF
+
PT_V9_TSTATE
],
%
g3
ldx
[%
sp
+
PTREGS_OFF
+
PT_V9_TNPC
],
%
l1
!
pc
=
npc
sra
%
o0
,
0
,
%
o0
...
...
@@ -1745,7 +1730,7 @@ ret_sys_call:
1
:
cmp
%
o0
,
-
ERESTART_RESTARTBLOCK
bgeu
,
pn
%
xcc
,
1
f
andcc
%
l0
,
_TIF_SYSCALL_TRACE
,
%
l6
andcc
%
l0
,
(
_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT
),
%
l6
80
:
/
*
System
call
success
,
clear
Carry
condition
code
.
*/
andn
%
g3
,
%
g2
,
%
g3
...
...
@@ -1760,7 +1745,7 @@ ret_sys_call:
/
*
System
call
failure
,
set
Carry
condition
code
.
*
Also
,
get
abs
(
errno
)
to
return
to
the
process
.
*/
andcc
%
l0
,
_TIF_SYSCALL_TRACE
,
%
l6
andcc
%
l0
,
(
_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT
)
,
%
l6
sub
%
g0
,
%
o0
,
%
o0
or
%
g3
,
%
g2
,
%
g3
stx
%
o0
,
[%
sp
+
PTREGS_OFF
+
PT_V9_I0
]
...
...
@@ -1773,8 +1758,9 @@ ret_sys_call:
b
,
pt
%
xcc
,
rtrap
stx
%
l2
,
[%
sp
+
PTREGS_OFF
+
PT_V9_TNPC
]
linux_syscall_trace2
:
add
%
sp
,
PTREGS_OFF
,
%
o0
call
syscall_trace
nop
mov
1
,
%
o1
stx
%
l1
,
[%
sp
+
PTREGS_OFF
+
PT_V9_TPC
]
ba
,
pt
%
xcc
,
rtrap
stx
%
l2
,
[%
sp
+
PTREGS_OFF
+
PT_V9_TNPC
]
...
...
arch/sparc64/kernel/power.c
View file @
f43a64c5
...
...
@@ -4,6 +4,8 @@
* Copyright (C) 1999 David S. Miller (davem@redhat.com)
*/
#define __KERNEL_SYSCALLS__
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
...
...
@@ -17,7 +19,6 @@
#include <asm/ebus.h>
#include <asm/auxio.h>
#define __KERNEL_SYSCALLS__
#include <linux/unistd.h>
/*
...
...
arch/sparc64/kernel/ptrace.c
View file @
f43a64c5
...
...
@@ -19,6 +19,8 @@
#include <linux/smp.h>
#include <linux/smp_lock.h>
#include <linux/security.h>
#include <linux/seccomp.h>
#include <linux/audit.h>
#include <linux/signal.h>
#include <asm/asi.h>
...
...
@@ -628,15 +630,27 @@ asmlinkage void do_ptrace(struct pt_regs *regs)
unlock_kernel
();
}
asmlinkage
void
syscall_trace
(
void
)
asmlinkage
void
syscall_trace
(
struct
pt_regs
*
regs
,
int
syscall_exit_p
)
{
#ifdef DEBUG_PTRACE
printk
(
"%s [%d]: syscall_trace
\n
"
,
current
->
comm
,
current
->
pid
);
#endif
if
(
!
test_thread_flag
(
TIF_SYSCALL_TRACE
))
return
;
/* do the secure computing check first */
secure_computing
(
regs
->
u_regs
[
UREG_G1
]);
if
(
unlikely
(
current
->
audit_context
)
&&
syscall_exit_p
)
{
unsigned
long
tstate
=
regs
->
tstate
;
int
result
=
AUDITSC_SUCCESS
;
if
(
unlikely
(
tstate
&
(
TSTATE_XCARRY
|
TSTATE_ICARRY
)))
result
=
AUDITSC_FAILURE
;
audit_syscall_exit
(
current
,
result
,
regs
->
u_regs
[
UREG_I0
]);
}
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
return
;
goto
out
;
if
(
!
test_thread_flag
(
TIF_SYSCALL_TRACE
))
goto
out
;
ptrace_notify
(
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
));
...
...
@@ -645,12 +659,20 @@ asmlinkage void syscall_trace(void)
* for normal use. strace only continues with a signal if the
* stopping signal is not SIGTRAP. -brl
*/
#ifdef DEBUG_PTRACE
printk
(
"%s [%d]: syscall_trace exit= %x
\n
"
,
current
->
comm
,
current
->
pid
,
current
->
exit_code
);
#endif
if
(
current
->
exit_code
)
{
send_sig
(
current
->
exit_code
,
current
,
1
);
send_sig
(
current
->
exit_code
,
current
,
1
);
current
->
exit_code
=
0
;
}
out:
if
(
unlikely
(
current
->
audit_context
)
&&
!
syscall_exit_p
)
audit_syscall_entry
(
current
,
(
test_thread_flag
(
TIF_32BIT
)
?
AUDIT_ARCH_SPARC
:
AUDIT_ARCH_SPARC64
),
regs
->
u_regs
[
UREG_G1
],
regs
->
u_regs
[
UREG_I0
],
regs
->
u_regs
[
UREG_I1
],
regs
->
u_regs
[
UREG_I2
],
regs
->
u_regs
[
UREG_I3
]);
}
arch/sparc64/kernel/smp.c
View file @
f43a64c5
...
...
@@ -45,8 +45,8 @@ extern void calibrate_delay(void);
/* Please don't make this stuff initdata!!! --DaveM */
static
unsigned
char
boot_cpu_id
;
cpumask_t
cpu_online_map
=
CPU_MASK_NONE
;
cpumask_t
phys_cpu_present_map
=
CPU_MASK_NONE
;
cpumask_t
cpu_online_map
=
CPU_MASK_NONE
__read_mostly
;
cpumask_t
phys_cpu_present_map
=
CPU_MASK_NONE
__read_mostly
;
static
cpumask_t
smp_commenced_mask
;
static
cpumask_t
cpu_callout_map
;
...
...
@@ -155,7 +155,7 @@ void cpu_panic(void)
panic
(
"SMP bolixed
\n
"
);
}
static
unsigned
long
current_tick_offset
;
static
unsigned
long
current_tick_offset
__read_mostly
;
/* This tick register synchronization scheme is taken entirely from
* the ia64 port, see arch/ia64/kernel/smpboot.c for details and credit.
...
...
@@ -1193,8 +1193,8 @@ void smp_send_stop(void)
{
}
unsigned
long
__per_cpu_base
;
unsigned
long
__per_cpu_shift
;
unsigned
long
__per_cpu_base
__read_mostly
;
unsigned
long
__per_cpu_shift
__read_mostly
;
EXPORT_SYMBOL
(
__per_cpu_base
);
EXPORT_SYMBOL
(
__per_cpu_shift
);
...
...
arch/sparc64/kernel/sparc64_ksyms.c
View file @
f43a64c5
...
...
@@ -79,7 +79,7 @@ extern void linux_sparc_syscall(void);
extern
void
rtrap
(
void
);
extern
void
show_regs
(
struct
pt_regs
*
);
extern
void
solaris_syscall
(
void
);
extern
void
syscall_trace
(
void
);
extern
void
syscall_trace
(
struct
pt_regs
*
,
int
);
extern
u32
sunos_sys_table
[],
sys_call_table32
[];
extern
void
tl0_solaris
(
void
);
extern
void
sys_sigsuspend
(
void
);
...
...
arch/sparc64/kernel/sys32.S
View file @
f43a64c5
...
...
@@ -135,6 +135,8 @@ SIGN2(sys32_shutdown, sys_shutdown, %o0, %o1)
SIGN3
(
sys32_socketpair
,
sys_socketpair
,
%
o0
,
%
o1
,
%
o2
)
SIGN1
(
sys32_getpeername
,
sys_getpeername
,
%
o0
)
SIGN1
(
sys32_getsockname
,
sys_getsockname
,
%
o0
)
SIGN2
(
sys32_ioprio_get
,
sys_ioprio_get
,
%
o0
,
%
o1
)
SIGN3
(
sys32_ioprio_set
,
sys_ioprio_set
,
%
o0
,
%
o1
,
%
o2
)
.
globl
sys32_mmap2
sys32_mmap2
:
...
...
arch/sparc64/kernel/systbls.S
View file @
f43a64c5
...
...
@@ -59,11 +59,11 @@ sys_call_table32:
/*
180
*/
.
word
sys32_flistxattr
,
sys_removexattr
,
sys_lremovexattr
,
compat_sys_sigpending
,
sys_ni_syscall
.
word
sys32_setpgid
,
sys32_fremovexattr
,
sys32_tkill
,
sys32_exit_group
,
sparc64_newuname
/*
190
*/
.
word
sys32_init_module
,
sparc64_personality
,
sys_remap_file_pages
,
sys32_epoll_create
,
sys32_epoll_ctl
.
word
sys32_epoll_wait
,
sys
_nis_syscall
,
sys_getppid
,
sys32_sigaction
,
sys_sgetmask
.
word
sys32_epoll_wait
,
sys
32_ioprio_set
,
sys_getppid
,
sys32_sigaction
,
sys_sgetmask
/*
200
*/
.
word
sys32_ssetmask
,
sys_sigsuspend
,
compat_sys_newlstat
,
sys_uselib
,
compat_sys_old_readdir
.
word
sys32_readahead
,
sys32_socketcall
,
sys32_syslog
,
sys32_lookup_dcookie
,
sys32_fadvise64
/*
210
*/
.
word
sys32_fadvise64_64
,
sys32_tgkill
,
sys32_waitpid
,
sys_swapoff
,
sys32_sysinfo
.
word
sys32_ipc
,
sys32_sigreturn
,
sys_clone
,
sys
_nis_syscall
,
sys32_adjtimex
.
word
sys32_ipc
,
sys32_sigreturn
,
sys_clone
,
sys
32_ioprio_get
,
sys32_adjtimex
/*
220
*/
.
word
sys32_sigprocmask
,
sys_ni_syscall
,
sys32_delete_module
,
sys_ni_syscall
,
sys32_getpgid
.
word
sys32_bdflush
,
sys32_sysfs
,
sys_nis_syscall
,
sys32_setfsuid16
,
sys32_setfsgid16
/*
230
*/
.
word
sys32_select
,
compat_sys_time
,
sys_nis_syscall
,
compat_sys_stime
,
compat_sys_statfs64
...
...
@@ -125,11 +125,11 @@ sys_call_table:
/*
180
*/
.
word
sys_flistxattr
,
sys_removexattr
,
sys_lremovexattr
,
sys_nis_syscall
,
sys_ni_syscall
.
word
sys_setpgid
,
sys_fremovexattr
,
sys_tkill
,
sys_exit_group
,
sparc64_newuname
/*
190
*/
.
word
sys_init_module
,
sparc64_personality
,
sys_remap_file_pages
,
sys_epoll_create
,
sys_epoll_ctl
.
word
sys_epoll_wait
,
sys_
nis_syscall
,
sys_getppid
,
sys_nis_syscall
,
sys_sgetmask
.
word
sys_epoll_wait
,
sys_
ioprio_set
,
sys_getppid
,
sys_nis_syscall
,
sys_sgetmask
/*
200
*/
.
word
sys_ssetmask
,
sys_nis_syscall
,
sys_newlstat
,
sys_uselib
,
sys_nis_syscall
.
word
sys_readahead
,
sys_socketcall
,
sys_syslog
,
sys_lookup_dcookie
,
sys_fadvise64
/*
210
*/
.
word
sys_fadvise64_64
,
sys_tgkill
,
sys_waitpid
,
sys_swapoff
,
sys_sysinfo
.
word
sys_ipc
,
sys_nis_syscall
,
sys_clone
,
sys_
nis_syscall
,
sys_adjtimex
.
word
sys_ipc
,
sys_nis_syscall
,
sys_clone
,
sys_
ioprio_get
,
sys_adjtimex
/*
220
*/
.
word
sys_nis_syscall
,
sys_ni_syscall
,
sys_delete_module
,
sys_ni_syscall
,
sys_getpgid
.
word
sys_bdflush
,
sys_sysfs
,
sys_nis_syscall
,
sys_setfsuid
,
sys_setfsgid
/*
230
*/
.
word
sys_select
,
sys_nis_syscall
,
sys_nis_syscall
,
sys_stime
,
sys_statfs64
...
...
arch/sparc64/kernel/time.c
View file @
f43a64c5
...
...
@@ -73,7 +73,7 @@ static __initdata struct sparc64_tick_ops dummy_tick_ops = {
.
get_tick
=
dummy_get_tick
,
};
struct
sparc64_tick_ops
*
tick_ops
=
&
dummy_tick_ops
;
struct
sparc64_tick_ops
*
tick_ops
__read_mostly
=
&
dummy_tick_ops
;
#define TICK_PRIV_BIT (1UL << 63)
...
...
@@ -195,7 +195,7 @@ static unsigned long tick_add_tick(unsigned long adj, unsigned long offset)
return
new_tick
;
}
static
struct
sparc64_tick_ops
tick_operations
=
{
static
struct
sparc64_tick_ops
tick_operations
__read_mostly
=
{
.
init_tick
=
tick_init_tick
,
.
get_tick
=
tick_get_tick
,
.
get_compare
=
tick_get_compare
,
...
...
@@ -276,7 +276,7 @@ static unsigned long stick_add_compare(unsigned long adj)
return
new_compare
;
}
static
struct
sparc64_tick_ops
stick_operations
=
{
static
struct
sparc64_tick_ops
stick_operations
__read_mostly
=
{
.
init_tick
=
stick_init_tick
,
.
get_tick
=
stick_get_tick
,
.
get_compare
=
stick_get_compare
,
...
...
@@ -422,7 +422,7 @@ static unsigned long hbtick_add_compare(unsigned long adj)
return
val
;
}
static
struct
sparc64_tick_ops
hbtick_operations
=
{
static
struct
sparc64_tick_ops
hbtick_operations
__read_mostly
=
{
.
init_tick
=
hbtick_init_tick
,
.
get_tick
=
hbtick_get_tick
,
.
get_compare
=
hbtick_get_compare
,
...
...
@@ -437,10 +437,9 @@ static struct sparc64_tick_ops hbtick_operations = {
* NOTE: On SUN5 systems the ticker interrupt comes in using 2
* interrupts, one at level14 and one with softint bit 0.
*/
unsigned
long
timer_tick_offset
;
unsigned
long
timer_tick_compare
;
unsigned
long
timer_tick_offset
__read_mostly
;
static
unsigned
long
timer_ticks_per_nsec_quotient
;
static
unsigned
long
timer_ticks_per_nsec_quotient
__read_mostly
;
#define TICK_SIZE (tick_nsec / 1000)
...
...
@@ -464,7 +463,7 @@ static inline void timer_check_rtc(void)
static
irqreturn_t
timer_interrupt
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
unsigned
long
ticks
,
pstate
;
unsigned
long
ticks
,
compare
,
pstate
;
write_seqlock
(
&
xtime_lock
);
...
...
@@ -483,14 +482,14 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
:
"=r"
(
pstate
)
:
"i"
(
PSTATE_IE
));
timer_tick_
compare
=
tick_ops
->
add_compare
(
timer_tick_offset
);
compare
=
tick_ops
->
add_compare
(
timer_tick_offset
);
ticks
=
tick_ops
->
get_tick
();
/* Restore PSTATE_IE. */
__asm__
__volatile__
(
"wrpr %0, 0x0, %%pstate"
:
/* no outputs */
:
"r"
(
pstate
));
}
while
(
time_after_eq
(
ticks
,
timer_tick_
compare
));
}
while
(
time_after_eq
(
ticks
,
compare
));
timer_check_rtc
();
...
...
@@ -506,11 +505,6 @@ void timer_tick_interrupt(struct pt_regs *regs)
do_timer
(
regs
);
/*
* Only keep timer_tick_offset uptodate, but don't set TICK_CMPR.
*/
timer_tick_compare
=
tick_ops
->
get_compare
()
+
timer_tick_offset
;
timer_check_rtc
();
write_sequnlock
(
&
xtime_lock
);
...
...
arch/sparc64/kernel/vmlinux.lds.S
View file @
f43a64c5
...
...
@@ -32,6 +32,8 @@ SECTIONS
.
data1
:
{
*(
.
data1
)
}
.
=
ALIGN
(
64
)
;
.
data.
cacheline_aligned
:
{
*(
.
data
.
cacheline_aligned
)
}
.
=
ALIGN
(
64
)
;
.
data.
read_mostly
:
{
*(
.
data
.
read_mostly
)
}
_edata
=
.
;
PROVIDE
(
edata
=
.
)
;
.
fixup
:
{
*(
.
fixup
)
}
...
...
arch/sparc64/mm/fault.c
View file @
f43a64c5
...
...
@@ -33,22 +33,6 @@
extern
struct
sparc_phys_banks
sp_banks
[
SPARC_PHYS_BANKS
];
/*
* To debug kernel during syscall entry.
*/
void
syscall_trace_entry
(
struct
pt_regs
*
regs
)
{
printk
(
"scall entry: %s[%d]/cpu%d: %d
\n
"
,
current
->
comm
,
current
->
pid
,
smp_processor_id
(),
(
int
)
regs
->
u_regs
[
UREG_G1
]);
}
/*
* To debug kernel during syscall exit.
*/
void
syscall_trace_exit
(
struct
pt_regs
*
regs
)
{
printk
(
"scall exit: %s[%d]/cpu%d: %d
\n
"
,
current
->
comm
,
current
->
pid
,
smp_processor_id
(),
(
int
)
regs
->
u_regs
[
UREG_G1
]);
}
/*
* To debug kernel to catch accesses to certain virtual/physical addresses.
* Mode = 0 selects physical watchpoints, mode = 1 selects virtual watchpoints.
...
...
arch/sparc64/solaris/entry64.S
View file @
f43a64c5
...
...
@@ -24,8 +24,9 @@
.
text
solaris_syscall_trace
:
add
%
sp
,
PTREGS_OFF
,
%
o0
call
syscall_trace
nop
mov
0
,
%
o1
srl
%
i0
,
0
,
%
o0
mov
%
i4
,
%
o4
srl
%
i1
,
0
,
%
o1
...
...
@@ -159,7 +160,9 @@ ret_from_solaris:
stx
%
l2
,
[%
sp
+
PTREGS_OFF
+
PT_V9_TNPC
]
!
npc
=
npc
+
4
solaris_syscall_trace2
:
add
%
sp
,
PTREGS_OFF
,
%
o0
call
syscall_trace
mov
1
,
%
o1
add
%
l1
,
0x4
,
%
l2
/*
npc
=
npc
+
4
*/
andcc
%
l1
,
1
,
%
g0
bne
,
pn
%
icc
,
2
b
...
...
include/asm-sparc/unistd.h
View file @
f43a64c5
...
...
@@ -212,7 +212,7 @@
#define __NR_epoll_create 193
/* Linux Specific */
#define __NR_epoll_ctl 194
/* Linux Specific */
#define __NR_epoll_wait 195
/* Linux Specific */
/* #define __NR_ulimit 196
Linux Specific */
#define __NR_ioprio_set 196
/*
Linux Specific */
#define __NR_getppid 197
/* Linux Specific */
#define __NR_sigaction 198
/* Linux Specific */
#define __NR_sgetmask 199
/* Linux Specific */
...
...
@@ -234,7 +234,7 @@
#define __NR_ipc 215
/* Linux Specific */
#define __NR_sigreturn 216
/* Linux Specific */
#define __NR_clone 217
/* Linux Specific */
/* #define __NR_modify_ldt 218 Linux Specific - i386 specific, unused
*/
#define __NR_ioprio_get 218
/* Linux Specific
*/
#define __NR_adjtimex 219
/* Linux Specific */
#define __NR_sigprocmask 220
/* Linux Specific */
#define __NR_create_module 221
/* Linux Specific */
...
...
include/asm-sparc64/thread_info.h
View file @
f43a64c5
...
...
@@ -220,8 +220,8 @@ register struct thread_info *current_thread_info_reg asm("g6");
#define TIF_NEWSIGNALS 6
/* wants new-style signals */
#define TIF_32BIT 7
/* 32-bit binary */
#define TIF_NEWCHILD 8
/* just-spawned child process */
/* TIF_* value 9 is available
*/
#define TIF_
POLLING_NRFLAG 10
#define TIF_SECCOMP 9
/* secure computing
*/
#define TIF_
SYSCALL_AUDIT 10
/* syscall auditing active */
#define TIF_SYSCALL_SUCCESS 11
/* NOTE: Thread flags >= 12 should be ones we have no interest
* in using in assembly, else we can't use the mask as
...
...
@@ -229,6 +229,7 @@ register struct thread_info *current_thread_info_reg asm("g6");
*/
#define TIF_ABI_PENDING 12
#define TIF_MEMDIE 13
#define TIF_POLLING_NRFLAG 14
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
...
...
@@ -239,9 +240,11 @@ register struct thread_info *current_thread_info_reg asm("g6");
#define _TIF_NEWSIGNALS (1<<TIF_NEWSIGNALS)
#define _TIF_32BIT (1<<TIF_32BIT)
#define _TIF_NEWCHILD (1<<TIF_NEWCHILD)
#define _TIF_
POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG
)
#define _TIF_
ABI_PENDING (1<<TIF_ABI_PENDING
)
#define _TIF_
SECCOMP (1<<TIF_SECCOMP
)
#define _TIF_
SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT
)
#define _TIF_SYSCALL_SUCCESS (1<<TIF_SYSCALL_SUCCESS)
#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
#define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \
(_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | \
...
...
include/asm-sparc64/unistd.h
View file @
f43a64c5
...
...
@@ -212,7 +212,7 @@
#define __NR_epoll_create 193
/* Linux Specific */
#define __NR_epoll_ctl 194
/* Linux Specific */
#define __NR_epoll_wait 195
/* Linux Specific */
/* #define __NR_ulimit 196
Linux Specific */
#define __NR_ioprio_set 196
/*
Linux Specific */
#define __NR_getppid 197
/* Linux Specific */
#define __NR_sigaction 198
/* Linux Specific */
#define __NR_sgetmask 199
/* Linux Specific */
...
...
@@ -234,7 +234,7 @@
#define __NR_ipc 215
/* Linux Specific */
#define __NR_sigreturn 216
/* Linux Specific */
#define __NR_clone 217
/* Linux Specific */
/* #define __NR_modify_ldt 218 Linux Specific - i386 specific, unused
*/
#define __NR_ioprio_get 218
/* Linux Specific
*/
#define __NR_adjtimex 219
/* Linux Specific */
#define __NR_sigprocmask 220
/* Linux Specific */
#define __NR_create_module 221
/* Linux Specific */
...
...
include/linux/audit.h
View file @
f43a64c5
...
...
@@ -165,7 +165,7 @@
#define AUDIT_ARCH_SH64 (EM_SH|__AUDIT_ARCH_64BIT)
#define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
#define AUDIT_ARCH_SPARC (EM_SPARC)
#define AUDIT_ARCH_SPARC64 (EM_SPARC
64
|__AUDIT_ARCH_64BIT)
#define AUDIT_ARCH_SPARC64 (EM_SPARC
V9
|__AUDIT_ARCH_64BIT)
#define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE)
#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
...
...
include/linux/cache.h
View file @
f43a64c5
...
...
@@ -13,7 +13,7 @@
#define SMP_CACHE_BYTES L1_CACHE_BYTES
#endif
#if
def CONFIG_X86
#if
defined(CONFIG_X86) || defined(CONFIG_SPARC64)
#define __read_mostly __attribute__((__section__(".data.read_mostly")))
#else
#define __read_mostly
...
...
init/Kconfig
View file @
f43a64c5
...
...
@@ -174,7 +174,7 @@ config AUDIT
config AUDITSYSCALL
bool "Enable system-call auditing support"
depends on AUDIT && (X86 || PPC || PPC64 || ARCH_S390 || IA64 || UML)
depends on AUDIT && (X86 || PPC || PPC64 || ARCH_S390 || IA64 || UML
|| SPARC64
)
default y if SECURITY_SELINUX
help
Enable low-overhead system-call auditing infrastructure that
...
...
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