Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
This commit is contained in:
commit
f43a64c5e1
@ -57,11 +57,11 @@ sys_call_table:
|
|||||||
/*180*/ .long sys_flistxattr, sys_removexattr, sys_lremovexattr, sys_sigpending, sys_ni_syscall
|
/*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
|
/*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
|
/*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
|
/*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
|
/*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
|
/*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
|
/*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
|
/*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
|
/*230*/ .long sys_select, sys_time, sys_nis_syscall, sys_stime, sys_statfs64
|
||||||
|
@ -43,6 +43,23 @@ config SPARC64_PAGE_SIZE_4MB
|
|||||||
|
|
||||||
endchoice
|
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 kernel/Kconfig.hz
|
||||||
|
|
||||||
source "init/Kconfig"
|
source "init/Kconfig"
|
||||||
|
@ -22,8 +22,6 @@
|
|||||||
#include <asm/estate.h>
|
#include <asm/estate.h>
|
||||||
#include <asm/auxio.h>
|
#include <asm/auxio.h>
|
||||||
|
|
||||||
/* #define SYSCALL_TRACING 1 */
|
|
||||||
|
|
||||||
#define curptr g6
|
#define curptr g6
|
||||||
|
|
||||||
#define NR_SYSCALLS 284 /* Each OS is different... */
|
#define NR_SYSCALLS 284 /* Each OS is different... */
|
||||||
@ -1554,11 +1552,12 @@ sys_ptrace: add %sp, PTREGS_OFF, %o0
|
|||||||
nop
|
nop
|
||||||
.align 32
|
.align 32
|
||||||
1: ldx [%curptr + TI_FLAGS], %l5
|
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
|
be,pt %icc, rtrap
|
||||||
clr %l6
|
clr %l6
|
||||||
|
add %sp, PTREGS_OFF, %o0
|
||||||
call syscall_trace
|
call syscall_trace
|
||||||
nop
|
mov 1, %o1
|
||||||
|
|
||||||
ba,pt %xcc, rtrap
|
ba,pt %xcc, rtrap
|
||||||
clr %l6
|
clr %l6
|
||||||
@ -1642,18 +1641,20 @@ linux_sparc_ni_syscall:
|
|||||||
or %l7, %lo(sys_ni_syscall), %l7
|
or %l7, %lo(sys_ni_syscall), %l7
|
||||||
|
|
||||||
linux_syscall_trace32:
|
linux_syscall_trace32:
|
||||||
|
add %sp, PTREGS_OFF, %o0
|
||||||
call syscall_trace
|
call syscall_trace
|
||||||
nop
|
clr %o1
|
||||||
srl %i0, 0, %o0
|
srl %i0, 0, %o0
|
||||||
mov %i4, %o4
|
srl %i4, 0, %o4
|
||||||
srl %i1, 0, %o1
|
srl %i1, 0, %o1
|
||||||
srl %i2, 0, %o2
|
srl %i2, 0, %o2
|
||||||
b,pt %xcc, 2f
|
b,pt %xcc, 2f
|
||||||
srl %i3, 0, %o3
|
srl %i3, 0, %o3
|
||||||
|
|
||||||
linux_syscall_trace:
|
linux_syscall_trace:
|
||||||
|
add %sp, PTREGS_OFF, %o0
|
||||||
call syscall_trace
|
call syscall_trace
|
||||||
nop
|
clr %o1
|
||||||
mov %i0, %o0
|
mov %i0, %o0
|
||||||
mov %i1, %o1
|
mov %i1, %o1
|
||||||
mov %i2, %o2
|
mov %i2, %o2
|
||||||
@ -1671,11 +1672,6 @@ linux_sparc_syscall32:
|
|||||||
bgeu,pn %xcc, linux_sparc_ni_syscall ! CTI
|
bgeu,pn %xcc, linux_sparc_ni_syscall ! CTI
|
||||||
srl %i0, 0, %o0 ! IEU0
|
srl %i0, 0, %o0 ! IEU0
|
||||||
sll %g1, 2, %l4 ! IEU0 Group
|
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
|
srl %i4, 0, %o4 ! IEU1
|
||||||
lduw [%l7 + %l4], %l7 ! Load
|
lduw [%l7 + %l4], %l7 ! Load
|
||||||
srl %i1, 0, %o1 ! IEU0 Group
|
srl %i1, 0, %o1 ! IEU0 Group
|
||||||
@ -1683,7 +1679,7 @@ linux_sparc_syscall32:
|
|||||||
|
|
||||||
srl %i5, 0, %o5 ! IEU1
|
srl %i5, 0, %o5 ! IEU1
|
||||||
srl %i2, 0, %o2 ! IEU0 Group
|
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
|
bne,pn %icc, linux_syscall_trace32 ! CTI
|
||||||
mov %i0, %l5 ! IEU1
|
mov %i0, %l5 ! IEU1
|
||||||
call %l7 ! CTI Group brk forced
|
call %l7 ! CTI Group brk forced
|
||||||
@ -1699,11 +1695,6 @@ linux_sparc_syscall:
|
|||||||
bgeu,pn %xcc, linux_sparc_ni_syscall ! CTI
|
bgeu,pn %xcc, linux_sparc_ni_syscall ! CTI
|
||||||
mov %i0, %o0 ! IEU0
|
mov %i0, %o0 ! IEU0
|
||||||
sll %g1, 2, %l4 ! IEU0 Group
|
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
|
mov %i1, %o1 ! IEU1
|
||||||
lduw [%l7 + %l4], %l7 ! Load
|
lduw [%l7 + %l4], %l7 ! Load
|
||||||
4: mov %i2, %o2 ! IEU0 Group
|
4: mov %i2, %o2 ! IEU0 Group
|
||||||
@ -1711,7 +1702,7 @@ linux_sparc_syscall:
|
|||||||
|
|
||||||
mov %i3, %o3 ! IEU1
|
mov %i3, %o3 ! IEU1
|
||||||
mov %i4, %o4 ! IEU0 Group
|
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
|
bne,pn %icc, linux_syscall_trace ! CTI Group
|
||||||
mov %i0, %l5 ! IEU0
|
mov %i0, %l5 ! IEU0
|
||||||
2: call %l7 ! CTI Group brk forced
|
2: call %l7 ! CTI Group brk forced
|
||||||
@ -1720,12 +1711,6 @@ linux_sparc_syscall:
|
|||||||
|
|
||||||
3: stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
|
3: stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
|
||||||
ret_sys_call:
|
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_TSTATE], %g3
|
||||||
ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc
|
ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc
|
||||||
sra %o0, 0, %o0
|
sra %o0, 0, %o0
|
||||||
@ -1745,7 +1730,7 @@ ret_sys_call:
|
|||||||
1:
|
1:
|
||||||
cmp %o0, -ERESTART_RESTARTBLOCK
|
cmp %o0, -ERESTART_RESTARTBLOCK
|
||||||
bgeu,pn %xcc, 1f
|
bgeu,pn %xcc, 1f
|
||||||
andcc %l0, _TIF_SYSCALL_TRACE, %l6
|
andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT), %l6
|
||||||
80:
|
80:
|
||||||
/* System call success, clear Carry condition code. */
|
/* System call success, clear Carry condition code. */
|
||||||
andn %g3, %g2, %g3
|
andn %g3, %g2, %g3
|
||||||
@ -1760,7 +1745,7 @@ ret_sys_call:
|
|||||||
/* System call failure, set Carry condition code.
|
/* System call failure, set Carry condition code.
|
||||||
* Also, get abs(errno) to return to the process.
|
* 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
|
sub %g0, %o0, %o0
|
||||||
or %g3, %g2, %g3
|
or %g3, %g2, %g3
|
||||||
stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
|
stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
|
||||||
@ -1773,8 +1758,9 @@ ret_sys_call:
|
|||||||
b,pt %xcc, rtrap
|
b,pt %xcc, rtrap
|
||||||
stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]
|
stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]
|
||||||
linux_syscall_trace2:
|
linux_syscall_trace2:
|
||||||
|
add %sp, PTREGS_OFF, %o0
|
||||||
call syscall_trace
|
call syscall_trace
|
||||||
nop
|
mov 1, %o1
|
||||||
stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC]
|
stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC]
|
||||||
ba,pt %xcc, rtrap
|
ba,pt %xcc, rtrap
|
||||||
stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]
|
stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC]
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
* Copyright (C) 1999 David S. Miller (davem@redhat.com)
|
* Copyright (C) 1999 David S. Miller (davem@redhat.com)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __KERNEL_SYSCALLS__
|
||||||
|
|
||||||
#include <linux/config.h>
|
#include <linux/config.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
@ -17,7 +19,6 @@
|
|||||||
#include <asm/ebus.h>
|
#include <asm/ebus.h>
|
||||||
#include <asm/auxio.h>
|
#include <asm/auxio.h>
|
||||||
|
|
||||||
#define __KERNEL_SYSCALLS__
|
|
||||||
#include <linux/unistd.h>
|
#include <linux/unistd.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/smp_lock.h>
|
#include <linux/smp_lock.h>
|
||||||
#include <linux/security.h>
|
#include <linux/security.h>
|
||||||
|
#include <linux/seccomp.h>
|
||||||
|
#include <linux/audit.h>
|
||||||
#include <linux/signal.h>
|
#include <linux/signal.h>
|
||||||
|
|
||||||
#include <asm/asi.h>
|
#include <asm/asi.h>
|
||||||
@ -628,15 +630,27 @@ out:
|
|||||||
unlock_kernel();
|
unlock_kernel();
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage void syscall_trace(void)
|
asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_PTRACE
|
/* do the secure computing check first */
|
||||||
printk("%s [%d]: syscall_trace\n", current->comm, current->pid);
|
secure_computing(regs->u_regs[UREG_G1]);
|
||||||
#endif
|
|
||||||
if (!test_thread_flag(TIF_SYSCALL_TRACE))
|
if (unlikely(current->audit_context) && syscall_exit_p) {
|
||||||
return;
|
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))
|
if (!(current->ptrace & PT_PTRACED))
|
||||||
return;
|
goto out;
|
||||||
|
|
||||||
|
if (!test_thread_flag(TIF_SYSCALL_TRACE))
|
||||||
|
goto out;
|
||||||
|
|
||||||
ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
|
ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
|
||||||
? 0x80 : 0));
|
? 0x80 : 0));
|
||||||
|
|
||||||
@ -645,12 +659,20 @@ asmlinkage void syscall_trace(void)
|
|||||||
* for normal use. strace only continues with a signal if the
|
* for normal use. strace only continues with a signal if the
|
||||||
* stopping signal is not SIGTRAP. -brl
|
* 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) {
|
if (current->exit_code) {
|
||||||
send_sig (current->exit_code, current, 1);
|
send_sig(current->exit_code, current, 1);
|
||||||
current->exit_code = 0;
|
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]);
|
||||||
}
|
}
|
||||||
|
@ -45,8 +45,8 @@ extern void calibrate_delay(void);
|
|||||||
/* Please don't make this stuff initdata!!! --DaveM */
|
/* Please don't make this stuff initdata!!! --DaveM */
|
||||||
static unsigned char boot_cpu_id;
|
static unsigned char boot_cpu_id;
|
||||||
|
|
||||||
cpumask_t cpu_online_map = CPU_MASK_NONE;
|
cpumask_t cpu_online_map = CPU_MASK_NONE __read_mostly;
|
||||||
cpumask_t phys_cpu_present_map = CPU_MASK_NONE;
|
cpumask_t phys_cpu_present_map = CPU_MASK_NONE __read_mostly;
|
||||||
static cpumask_t smp_commenced_mask;
|
static cpumask_t smp_commenced_mask;
|
||||||
static cpumask_t cpu_callout_map;
|
static cpumask_t cpu_callout_map;
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ void cpu_panic(void)
|
|||||||
panic("SMP bolixed\n");
|
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
|
/* This tick register synchronization scheme is taken entirely from
|
||||||
* the ia64 port, see arch/ia64/kernel/smpboot.c for details and credit.
|
* 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_base __read_mostly;
|
||||||
unsigned long __per_cpu_shift;
|
unsigned long __per_cpu_shift __read_mostly;
|
||||||
|
|
||||||
EXPORT_SYMBOL(__per_cpu_base);
|
EXPORT_SYMBOL(__per_cpu_base);
|
||||||
EXPORT_SYMBOL(__per_cpu_shift);
|
EXPORT_SYMBOL(__per_cpu_shift);
|
||||||
|
@ -79,7 +79,7 @@ extern void linux_sparc_syscall(void);
|
|||||||
extern void rtrap(void);
|
extern void rtrap(void);
|
||||||
extern void show_regs(struct pt_regs *);
|
extern void show_regs(struct pt_regs *);
|
||||||
extern void solaris_syscall(void);
|
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 u32 sunos_sys_table[], sys_call_table32[];
|
||||||
extern void tl0_solaris(void);
|
extern void tl0_solaris(void);
|
||||||
extern void sys_sigsuspend(void);
|
extern void sys_sigsuspend(void);
|
||||||
|
@ -135,6 +135,8 @@ SIGN2(sys32_shutdown, sys_shutdown, %o0, %o1)
|
|||||||
SIGN3(sys32_socketpair, sys_socketpair, %o0, %o1, %o2)
|
SIGN3(sys32_socketpair, sys_socketpair, %o0, %o1, %o2)
|
||||||
SIGN1(sys32_getpeername, sys_getpeername, %o0)
|
SIGN1(sys32_getpeername, sys_getpeername, %o0)
|
||||||
SIGN1(sys32_getsockname, sys_getsockname, %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
|
.globl sys32_mmap2
|
||||||
sys32_mmap2:
|
sys32_mmap2:
|
||||||
|
@ -59,11 +59,11 @@ sys_call_table32:
|
|||||||
/*180*/ .word sys32_flistxattr, sys_removexattr, sys_lremovexattr, compat_sys_sigpending, sys_ni_syscall
|
/*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
|
.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
|
/*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, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask
|
||||||
/*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir
|
/*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
|
.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
|
/*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, sys32_ioprio_get, sys32_adjtimex
|
||||||
/*220*/ .word sys32_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys32_getpgid
|
/*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
|
.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
|
/*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
|
/*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
|
.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
|
/*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
|
/*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
|
.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
|
/*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
|
/*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
|
.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
|
/*230*/ .word sys_select, sys_nis_syscall, sys_nis_syscall, sys_stime, sys_statfs64
|
||||||
|
@ -73,7 +73,7 @@ static __initdata struct sparc64_tick_ops dummy_tick_ops = {
|
|||||||
.get_tick = dummy_get_tick,
|
.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)
|
#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;
|
return new_tick;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct sparc64_tick_ops tick_operations = {
|
static struct sparc64_tick_ops tick_operations __read_mostly = {
|
||||||
.init_tick = tick_init_tick,
|
.init_tick = tick_init_tick,
|
||||||
.get_tick = tick_get_tick,
|
.get_tick = tick_get_tick,
|
||||||
.get_compare = tick_get_compare,
|
.get_compare = tick_get_compare,
|
||||||
@ -276,7 +276,7 @@ static unsigned long stick_add_compare(unsigned long adj)
|
|||||||
return new_compare;
|
return new_compare;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct sparc64_tick_ops stick_operations = {
|
static struct sparc64_tick_ops stick_operations __read_mostly = {
|
||||||
.init_tick = stick_init_tick,
|
.init_tick = stick_init_tick,
|
||||||
.get_tick = stick_get_tick,
|
.get_tick = stick_get_tick,
|
||||||
.get_compare = stick_get_compare,
|
.get_compare = stick_get_compare,
|
||||||
@ -422,7 +422,7 @@ static unsigned long hbtick_add_compare(unsigned long adj)
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct sparc64_tick_ops hbtick_operations = {
|
static struct sparc64_tick_ops hbtick_operations __read_mostly = {
|
||||||
.init_tick = hbtick_init_tick,
|
.init_tick = hbtick_init_tick,
|
||||||
.get_tick = hbtick_get_tick,
|
.get_tick = hbtick_get_tick,
|
||||||
.get_compare = hbtick_get_compare,
|
.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
|
* NOTE: On SUN5 systems the ticker interrupt comes in using 2
|
||||||
* interrupts, one at level14 and one with softint bit 0.
|
* interrupts, one at level14 and one with softint bit 0.
|
||||||
*/
|
*/
|
||||||
unsigned long timer_tick_offset;
|
unsigned long timer_tick_offset __read_mostly;
|
||||||
unsigned long timer_tick_compare;
|
|
||||||
|
|
||||||
static unsigned long timer_ticks_per_nsec_quotient;
|
static unsigned long timer_ticks_per_nsec_quotient __read_mostly;
|
||||||
|
|
||||||
#define TICK_SIZE (tick_nsec / 1000)
|
#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)
|
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);
|
write_seqlock(&xtime_lock);
|
||||||
|
|
||||||
@ -483,14 +482,14 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs)
|
|||||||
: "=r" (pstate)
|
: "=r" (pstate)
|
||||||
: "i" (PSTATE_IE));
|
: "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();
|
ticks = tick_ops->get_tick();
|
||||||
|
|
||||||
/* Restore PSTATE_IE. */
|
/* Restore PSTATE_IE. */
|
||||||
__asm__ __volatile__("wrpr %0, 0x0, %%pstate"
|
__asm__ __volatile__("wrpr %0, 0x0, %%pstate"
|
||||||
: /* no outputs */
|
: /* no outputs */
|
||||||
: "r" (pstate));
|
: "r" (pstate));
|
||||||
} while (time_after_eq(ticks, timer_tick_compare));
|
} while (time_after_eq(ticks, compare));
|
||||||
|
|
||||||
timer_check_rtc();
|
timer_check_rtc();
|
||||||
|
|
||||||
@ -506,11 +505,6 @@ void timer_tick_interrupt(struct pt_regs *regs)
|
|||||||
|
|
||||||
do_timer(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();
|
timer_check_rtc();
|
||||||
|
|
||||||
write_sequnlock(&xtime_lock);
|
write_sequnlock(&xtime_lock);
|
||||||
|
@ -32,6 +32,8 @@ SECTIONS
|
|||||||
.data1 : { *(.data1) }
|
.data1 : { *(.data1) }
|
||||||
. = ALIGN(64);
|
. = ALIGN(64);
|
||||||
.data.cacheline_aligned : { *(.data.cacheline_aligned) }
|
.data.cacheline_aligned : { *(.data.cacheline_aligned) }
|
||||||
|
. = ALIGN(64);
|
||||||
|
.data.read_mostly : { *(.data.read_mostly) }
|
||||||
_edata = .;
|
_edata = .;
|
||||||
PROVIDE (edata = .);
|
PROVIDE (edata = .);
|
||||||
.fixup : { *(.fixup) }
|
.fixup : { *(.fixup) }
|
||||||
|
@ -33,22 +33,6 @@
|
|||||||
|
|
||||||
extern struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS];
|
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.
|
* To debug kernel to catch accesses to certain virtual/physical addresses.
|
||||||
* Mode = 0 selects physical watchpoints, mode = 1 selects virtual watchpoints.
|
* Mode = 0 selects physical watchpoints, mode = 1 selects virtual watchpoints.
|
||||||
|
@ -24,8 +24,9 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
solaris_syscall_trace:
|
solaris_syscall_trace:
|
||||||
|
add %sp, PTREGS_OFF, %o0
|
||||||
call syscall_trace
|
call syscall_trace
|
||||||
nop
|
mov 0, %o1
|
||||||
srl %i0, 0, %o0
|
srl %i0, 0, %o0
|
||||||
mov %i4, %o4
|
mov %i4, %o4
|
||||||
srl %i1, 0, %o1
|
srl %i1, 0, %o1
|
||||||
@ -159,8 +160,10 @@ ret_from_solaris:
|
|||||||
stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] !npc = npc+4
|
stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] !npc = npc+4
|
||||||
|
|
||||||
solaris_syscall_trace2:
|
solaris_syscall_trace2:
|
||||||
|
add %sp, PTREGS_OFF, %o0
|
||||||
call syscall_trace
|
call syscall_trace
|
||||||
add %l1, 0x4, %l2 /* npc = npc+4 */
|
mov 1, %o1
|
||||||
|
add %l1, 0x4, %l2 /* npc = npc+4 */
|
||||||
andcc %l1, 1, %g0
|
andcc %l1, 1, %g0
|
||||||
bne,pn %icc, 2b
|
bne,pn %icc, 2b
|
||||||
nop
|
nop
|
||||||
|
@ -212,7 +212,7 @@
|
|||||||
#define __NR_epoll_create 193 /* Linux Specific */
|
#define __NR_epoll_create 193 /* Linux Specific */
|
||||||
#define __NR_epoll_ctl 194 /* Linux Specific */
|
#define __NR_epoll_ctl 194 /* Linux Specific */
|
||||||
#define __NR_epoll_wait 195 /* 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_getppid 197 /* Linux Specific */
|
||||||
#define __NR_sigaction 198 /* Linux Specific */
|
#define __NR_sigaction 198 /* Linux Specific */
|
||||||
#define __NR_sgetmask 199 /* Linux Specific */
|
#define __NR_sgetmask 199 /* Linux Specific */
|
||||||
@ -234,7 +234,7 @@
|
|||||||
#define __NR_ipc 215 /* Linux Specific */
|
#define __NR_ipc 215 /* Linux Specific */
|
||||||
#define __NR_sigreturn 216 /* Linux Specific */
|
#define __NR_sigreturn 216 /* Linux Specific */
|
||||||
#define __NR_clone 217 /* 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_adjtimex 219 /* Linux Specific */
|
||||||
#define __NR_sigprocmask 220 /* Linux Specific */
|
#define __NR_sigprocmask 220 /* Linux Specific */
|
||||||
#define __NR_create_module 221 /* Linux Specific */
|
#define __NR_create_module 221 /* Linux Specific */
|
||||||
|
@ -220,8 +220,8 @@ register struct thread_info *current_thread_info_reg asm("g6");
|
|||||||
#define TIF_NEWSIGNALS 6 /* wants new-style signals */
|
#define TIF_NEWSIGNALS 6 /* wants new-style signals */
|
||||||
#define TIF_32BIT 7 /* 32-bit binary */
|
#define TIF_32BIT 7 /* 32-bit binary */
|
||||||
#define TIF_NEWCHILD 8 /* just-spawned child process */
|
#define TIF_NEWCHILD 8 /* just-spawned child process */
|
||||||
/* TIF_* value 9 is available */
|
#define TIF_SECCOMP 9 /* secure computing */
|
||||||
#define TIF_POLLING_NRFLAG 10
|
#define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */
|
||||||
#define TIF_SYSCALL_SUCCESS 11
|
#define TIF_SYSCALL_SUCCESS 11
|
||||||
/* NOTE: Thread flags >= 12 should be ones we have no interest
|
/* NOTE: Thread flags >= 12 should be ones we have no interest
|
||||||
* in using in assembly, else we can't use the mask as
|
* 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_ABI_PENDING 12
|
||||||
#define TIF_MEMDIE 13
|
#define TIF_MEMDIE 13
|
||||||
|
#define TIF_POLLING_NRFLAG 14
|
||||||
|
|
||||||
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
|
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
|
||||||
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
|
#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_NEWSIGNALS (1<<TIF_NEWSIGNALS)
|
||||||
#define _TIF_32BIT (1<<TIF_32BIT)
|
#define _TIF_32BIT (1<<TIF_32BIT)
|
||||||
#define _TIF_NEWCHILD (1<<TIF_NEWCHILD)
|
#define _TIF_NEWCHILD (1<<TIF_NEWCHILD)
|
||||||
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
|
#define _TIF_SECCOMP (1<<TIF_SECCOMP)
|
||||||
#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
|
#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
|
||||||
#define _TIF_SYSCALL_SUCCESS (1<<TIF_SYSCALL_SUCCESS)
|
#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) | \
|
#define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \
|
||||||
(_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | \
|
(_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | \
|
||||||
|
@ -212,7 +212,7 @@
|
|||||||
#define __NR_epoll_create 193 /* Linux Specific */
|
#define __NR_epoll_create 193 /* Linux Specific */
|
||||||
#define __NR_epoll_ctl 194 /* Linux Specific */
|
#define __NR_epoll_ctl 194 /* Linux Specific */
|
||||||
#define __NR_epoll_wait 195 /* 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_getppid 197 /* Linux Specific */
|
||||||
#define __NR_sigaction 198 /* Linux Specific */
|
#define __NR_sigaction 198 /* Linux Specific */
|
||||||
#define __NR_sgetmask 199 /* Linux Specific */
|
#define __NR_sgetmask 199 /* Linux Specific */
|
||||||
@ -234,7 +234,7 @@
|
|||||||
#define __NR_ipc 215 /* Linux Specific */
|
#define __NR_ipc 215 /* Linux Specific */
|
||||||
#define __NR_sigreturn 216 /* Linux Specific */
|
#define __NR_sigreturn 216 /* Linux Specific */
|
||||||
#define __NR_clone 217 /* 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_adjtimex 219 /* Linux Specific */
|
||||||
#define __NR_sigprocmask 220 /* Linux Specific */
|
#define __NR_sigprocmask 220 /* Linux Specific */
|
||||||
#define __NR_create_module 221 /* Linux Specific */
|
#define __NR_create_module 221 /* Linux Specific */
|
||||||
|
@ -165,7 +165,7 @@
|
|||||||
#define AUDIT_ARCH_SH64 (EM_SH|__AUDIT_ARCH_64BIT)
|
#define AUDIT_ARCH_SH64 (EM_SH|__AUDIT_ARCH_64BIT)
|
||||||
#define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
#define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||||
#define AUDIT_ARCH_SPARC (EM_SPARC)
|
#define AUDIT_ARCH_SPARC (EM_SPARC)
|
||||||
#define AUDIT_ARCH_SPARC64 (EM_SPARC64|__AUDIT_ARCH_64BIT)
|
#define AUDIT_ARCH_SPARC64 (EM_SPARCV9|__AUDIT_ARCH_64BIT)
|
||||||
#define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE)
|
#define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE)
|
||||||
#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#define SMP_CACHE_BYTES L1_CACHE_BYTES
|
#define SMP_CACHE_BYTES L1_CACHE_BYTES
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_X86
|
#if defined(CONFIG_X86) || defined(CONFIG_SPARC64)
|
||||||
#define __read_mostly __attribute__((__section__(".data.read_mostly")))
|
#define __read_mostly __attribute__((__section__(".data.read_mostly")))
|
||||||
#else
|
#else
|
||||||
#define __read_mostly
|
#define __read_mostly
|
||||||
|
@ -174,7 +174,7 @@ config AUDIT
|
|||||||
|
|
||||||
config AUDITSYSCALL
|
config AUDITSYSCALL
|
||||||
bool "Enable system-call auditing support"
|
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
|
default y if SECURITY_SELINUX
|
||||||
help
|
help
|
||||||
Enable low-overhead system-call auditing infrastructure that
|
Enable low-overhead system-call auditing infrastructure that
|
||||||
|
Loading…
Reference in New Issue
Block a user