Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
peacekeeper
Linux Stable
提交
f43a64c5
L
Linux Stable
项目概览
peacekeeper
/
Linux Stable
12 个月 前同步成功
通知
24
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
Linux Stable
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f43a64c5
编写于
7月 11, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
上级
5c23804a
f7ceba36
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
111 addition
and
97 deletion
+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
未找到文件。
arch/sparc/kernel/systbls.S
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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,8 +160,10 @@ 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
add
%
l1
,
0x4
,
%
l2
/*
npc
=
npc
+
4
*/
mov
1
,
%
o1
add
%
l1
,
0x4
,
%
l2
/*
npc
=
npc
+
4
*/
andcc
%
l1
,
1
,
%
g0
bne
,
pn
%
icc
,
2
b
nop
...
...
include/asm-sparc/unistd.h
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录