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
932d934b
Commit
932d934b
authored
Oct 15, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/davem/BK/sparc-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
ffbbaa20
717781e2
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
145 additions
and
215 deletions
+145
-215
arch/sparc/kernel/signal.c
arch/sparc/kernel/signal.c
+0
-32
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sparc_ksyms.c
+1
-0
arch/sparc/kernel/systbls.S
arch/sparc/kernel/systbls.S
+1
-1
arch/sparc/kernel/time.c
arch/sparc/kernel/time.c
+1
-0
arch/sparc64/kernel/signal.c
arch/sparc64/kernel/signal.c
+0
-32
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/sparc64_ksyms.c
+1
-0
arch/sparc64/kernel/systbls.S
arch/sparc64/kernel/systbls.S
+2
-2
arch/sparc64/kernel/time.c
arch/sparc64/kernel/time.c
+1
-0
arch/sparc64/lib/U3copy_from_user.S
arch/sparc64/lib/U3copy_from_user.S
+19
-0
arch/sparc64/lib/U3copy_to_user.S
arch/sparc64/lib/U3copy_to_user.S
+19
-0
arch/sparc64/lib/U3memcpy.S
arch/sparc64/lib/U3memcpy.S
+19
-0
arch/sparc64/lib/VIScopy.S
arch/sparc64/lib/VIScopy.S
+33
-0
arch/sparc64/lib/blockops.S
arch/sparc64/lib/blockops.S
+16
-0
include/asm-generic/siginfo.h
include/asm-generic/siginfo.h
+23
-5
include/asm-sparc/siginfo.h
include/asm-sparc/siginfo.h
+2
-70
include/asm-sparc/unistd.h
include/asm-sparc/unistd.h
+1
-1
include/asm-sparc64/siginfo.h
include/asm-sparc64/siginfo.h
+2
-71
include/asm-sparc64/unistd.h
include/asm-sparc64/unistd.h
+1
-1
kernel/signal.c
kernel/signal.c
+3
-0
No files found.
arch/sparc/kernel/signal.c
View file @
932d934b
...
...
@@ -90,38 +90,6 @@ struct rt_signal_frame {
__siginfo_fpu_t
fpu_state
;
};
int
copy_siginfo_to_user
(
siginfo_t
*
to
,
siginfo_t
*
from
)
{
if
(
!
access_ok
(
VERIFY_WRITE
,
to
,
sizeof
(
siginfo_t
)))
return
-
EFAULT
;
if
(
from
->
si_code
<
0
)
return
__copy_to_user
(
to
,
from
,
sizeof
(
siginfo_t
));
else
{
int
err
;
/* If you change siginfo_t structure, please be sure
this code is fixed accordingly.
It should never copy any pad contained in the structure
to avoid security leaks, but must copy the generic
3 ints plus the relevant union member. */
err
=
__put_user
(
from
->
si_signo
,
&
to
->
si_signo
);
err
|=
__put_user
(
from
->
si_errno
,
&
to
->
si_errno
);
err
|=
__put_user
((
short
)
from
->
si_code
,
&
to
->
si_code
);
switch
(
from
->
si_code
>>
16
)
{
case
__SI_CHLD
>>
16
:
err
|=
__put_user
(
from
->
si_utime
,
&
to
->
si_utime
);
err
|=
__put_user
(
from
->
si_stime
,
&
to
->
si_stime
);
/* case __SI_RT: This is not generated by the kernel as of now. */
err
|=
__put_user
(
from
->
si_status
,
&
to
->
si_status
);
default:
err
|=
__put_user
(
from
->
si_uid
,
&
to
->
si_uid
);
err
|=
__put_user
(
from
->
si_pid
,
&
to
->
si_pid
);
break
;
}
return
err
;
}
}
/* Align macros */
#define SF_ALIGNEDSZ (((sizeof(struct signal_sframe) + 7) & (~7)))
#define NF_ALIGNEDSZ (((sizeof(struct new_signal_frame) + 7) & (~7)))
...
...
arch/sparc/kernel/sparc_ksyms.c
View file @
932d934b
...
...
@@ -243,6 +243,7 @@ EXPORT_SYMBOL(__prom_getsibling);
/* sparc library symbols */
EXPORT_SYMBOL
(
bcopy
);
EXPORT_SYMBOL
(
memchr
);
EXPORT_SYMBOL_NOVERS
(
memscan
);
EXPORT_SYMBOL_NOVERS
(
strlen
);
EXPORT_SYMBOL
(
strnlen
);
...
...
arch/sparc/kernel/systbls.S
View file @
932d934b
...
...
@@ -59,7 +59,7 @@ sys_call_table:
/*
190
*/
.
long
sys_init_module
,
sys_personality
,
sys_nis_syscall
,
sys_nis_syscall
,
sys_nis_syscall
/*
195
*/
.
long
sys_nis_syscall
,
sys_nis_syscall
,
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_
nis_syscall
,
sys_nis_syscall
/*
205
*/
.
long
sys_readahead
,
sys_socketcall
,
sys_syslog
,
sys_
lookup_dcookie
,
sys_nis_syscall
/*
210
*/
.
long
sys_nis_syscall
,
sys_nis_syscall
,
sys_waitpid
,
sys_swapoff
,
sys_sysinfo
/*
215
*/
.
long
sys_ipc
,
sys_sigreturn
,
sys_clone
,
sys_nis_syscall
,
sys_adjtimex
/*
220
*/
.
long
sys_sigprocmask
,
sys_create_module
,
sys_delete_module
,
sys_get_kernel_syms
,
sys_getpgid
...
...
arch/sparc/kernel/time.c
View file @
932d934b
...
...
@@ -27,6 +27,7 @@
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/ioport.h>
#include <linux/profile.h>
#include <asm/oplib.h>
#include <asm/segment.h>
...
...
arch/sparc64/kernel/signal.c
View file @
932d934b
...
...
@@ -36,38 +36,6 @@
static
int
do_signal
(
sigset_t
*
oldset
,
struct
pt_regs
*
regs
,
unsigned
long
orig_o0
,
int
ret_from_syscall
);
int
copy_siginfo_to_user
(
siginfo_t
*
to
,
siginfo_t
*
from
)
{
if
(
!
access_ok
(
VERIFY_WRITE
,
to
,
sizeof
(
siginfo_t
)))
return
-
EFAULT
;
if
(
from
->
si_code
<
0
)
return
__copy_to_user
(
to
,
from
,
sizeof
(
siginfo_t
));
else
{
int
err
;
/* If you change siginfo_t structure, please be sure
this code is fixed accordingly.
It should never copy any pad contained in the structure
to avoid security leaks, but must copy the generic
3 ints plus the relevant union member. */
err
=
__put_user
(
*
(
long
*
)
&
from
->
si_signo
,
(
long
*
)
&
to
->
si_signo
);
err
|=
__put_user
((
short
)
from
->
si_code
,
&
to
->
si_code
);
switch
(
from
->
si_code
>>
16
)
{
case
__SI_CHLD
>>
16
:
err
|=
__put_user
(
from
->
si_utime
,
&
to
->
si_utime
);
err
|=
__put_user
(
from
->
si_stime
,
&
to
->
si_stime
);
case
__SI_FAULT
>>
16
:
case
__SI_POLL
>>
16
:
err
|=
__put_user
(
from
->
si_trapno
,
&
to
->
si_trapno
);
default:
err
|=
__put_user
(
from
->
si_addr
,
&
to
->
si_addr
);
break
;
/* case __SI_RT: This is not generated by the kernel as of now. */
}
return
err
;
}
}
/* {set, get}context() needed for 64-bit SparcLinux userland. */
asmlinkage
void
sparc64_set_context
(
struct
pt_regs
*
regs
)
{
...
...
arch/sparc64/kernel/sparc64_ksyms.c
View file @
932d934b
...
...
@@ -331,6 +331,7 @@ EXPORT_SYMBOL(__memscan_generic);
EXPORT_SYMBOL
(
__memcmp
);
EXPORT_SYMBOL
(
__strncmp
);
EXPORT_SYMBOL
(
__memmove
);
EXPORT_SYMBOL
(
memchr
);
EXPORT_SYMBOL
(
csum_partial_copy_sparc64
);
EXPORT_SYMBOL
(
ip_fast_csum
);
...
...
arch/sparc64/kernel/systbls.S
View file @
932d934b
...
...
@@ -60,7 +60,7 @@ sys_call_table32:
/*
190
*/
.
word
sys32_init_module
,
sparc64_personality
,
sys_nis_syscall
,
sys_nis_syscall
,
sys_nis_syscall
.
word
sys_nis_syscall
,
sys_nis_syscall
,
sys_getppid
,
sys32_sigaction
,
sys_sgetmask
/*
200
*/
.
word
sys_ssetmask
,
sys_sigsuspend
,
sys32_newlstat
,
sys_uselib
,
old32_readdir
.
word
sys32_readahead
,
sys32_socketcall
,
sys_syslog
,
sys_
nis_syscall
,
sys_nis_syscall
.
word
sys32_readahead
,
sys32_socketcall
,
sys_syslog
,
sys_
lookup_dcookie
,
sys_nis_syscall
/*
210
*/
.
word
sys_nis_syscall
,
sys_nis_syscall
,
sys_waitpid
,
sys_swapoff
,
sys32_sysinfo
.
word
sys32_ipc
,
sys32_sigreturn
,
sys_clone
,
sys_nis_syscall
,
sys32_adjtimex
/*
220
*/
.
word
sys32_sigprocmask
,
sys32_create_module
,
sys32_delete_module
,
sys32_get_kernel_syms
,
sys_getpgid
...
...
@@ -119,7 +119,7 @@ sys_call_table:
/*
190
*/
.
word
sys_init_module
,
sparc64_personality
,
sys_nis_syscall
,
sys_nis_syscall
,
sys_nis_syscall
.
word
sys_nis_syscall
,
sys_nis_syscall
,
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_
nis_syscall
,
sys_nis_syscall
.
word
sys_readahead
,
sys_socketcall
,
sys_syslog
,
sys_
lookup_dcookie
,
sys_nis_syscall
/*
210
*/
.
word
sys_nis_syscall
,
sys_nis_syscall
,
sys_waitpid
,
sys_swapoff
,
sys_sysinfo
.
word
sys_ipc
,
sys_nis_syscall
,
sys_clone
,
sys_nis_syscall
,
sys_adjtimex
/*
220
*/
.
word
sys_nis_syscall
,
sys_create_module
,
sys_delete_module
,
sys_get_kernel_syms
,
sys_getpgid
...
...
arch/sparc64/kernel/time.c
View file @
932d934b
...
...
@@ -22,6 +22,7 @@
#include <linux/ioport.h>
#include <linux/mc146818rtc.h>
#include <linux/delay.h>
#include <linux/profile.h>
#include <asm/oplib.h>
#include <asm/mostek.h>
...
...
arch/sparc64/lib/U3copy_from_user.S
View file @
932d934b
...
...
@@ -7,6 +7,8 @@
#ifdef __KERNEL__
#include <asm/visasm.h>
#include <asm/asi.h>
#include <asm/dcu.h>
#include <asm/spitfire.h>
#undef SMALL_COPY_USES_FPU
#define EXNV(x,y,a,b) \
98
:
x
,
y
; \
...
...
@@ -181,6 +183,16 @@ U3copy_from_user_enter:
.
align
64
U3copy_from_user_begin
:
#ifdef __KERNEL__
.
globl
U3copy_from_user_nop_1_6
U3copy_from_user_nop_1_6
:
ldxa
[%
g0
]
ASI_DCU_CONTROL_REG
,
%
g3
sethi
%
uhi
(
DCU_PE
),
%
o3
sllx
%
o3
,
32
,
%
o3
or
%
g3
,
%
o3
,
%
o3
stxa
%
o3
,
[%
g0
]
ASI_DCU_CONTROL_REG
!
Enable
P
-
cache
membar
#
Sync
#endif
prefetcha
[%
o1
+
0x000
]
%
asi
,
#
one_read
!
MS
Group1
prefetcha
[%
o1
+
0x040
]
%
asi
,
#
one_read
!
MS
Group2
andn
%
o2
,
(
0x40
-
1
),
%
o4
!
A0
...
...
@@ -321,6 +333,13 @@ U3copy_from_user_loopfini:
stda
%f16
,
[%
o0
]
ASI_BLK_P
!
MS
add
%
o0
,
0x40
,
%
o0
!
A0
add
%
o1
,
0x40
,
%
o1
!
A1
#ifdef __KERNEL__
.
globl
U3copy_from_user_nop_2_3
U3copy_from_user_nop_2_3
:
mov
PRIMARY_CONTEXT
,
%
o3
stxa
%
g0
,
[%
o3
]
ASI_DMMU
!
Flush
P
-
cache
stxa
%
g3
,
[%
g0
]
ASI_DCU_CONTROL_REG
!
Disable
P
-
cache
#endif
membar
#
Sync
!
MS
Group26
(
7
-
cycle
stall
)
/
*
Now
we
copy
the
(
len
modulo
64
)
bytes
at
the
end
.
...
...
arch/sparc64/lib/U3copy_to_user.S
View file @
932d934b
...
...
@@ -7,6 +7,8 @@
#ifdef __KERNEL__
#include <asm/visasm.h>
#include <asm/asi.h>
#include <asm/dcu.h>
#include <asm/spitfire.h>
#undef SMALL_COPY_USES_FPU
#define EXNV(x,y,a,b) \
98
:
x
,
y
; \
...
...
@@ -228,6 +230,16 @@ U3copy_to_user_enter:
.
align
64
U3copy_to_user_begin
:
#ifdef __KERNEL__
.
globl
U3copy_to_user_nop_1_6
U3copy_to_user_nop_1_6
:
ldxa
[%
g0
]
ASI_DCU_CONTROL_REG
,
%
g3
sethi
%
uhi
(
DCU_PE
),
%
o3
sllx
%
o3
,
32
,
%
o3
or
%
g3
,
%
o3
,
%
o3
stxa
%
o3
,
[%
g0
]
ASI_DCU_CONTROL_REG
!
Enable
P
-
cache
membar
#
Sync
#endif
prefetch
[%
o1
+
0x000
],
#
one_read
!
MS
Group1
prefetch
[%
o1
+
0x040
],
#
one_read
!
MS
Group2
andn
%
o2
,
(
0x40
-
1
),
%
o4
!
A0
...
...
@@ -368,6 +380,13 @@ U3copy_to_user_loopfini:
EXBLK4
(
stda
%f16
,
[%
o0
]
ASI_BLK_AIUS
)
!
MS
add
%
o0
,
0x40
,
%
o0
!
A0
add
%
o1
,
0x40
,
%
o1
!
A1
#ifdef __KERNEL__
.
globl
U3copy_to_user_nop_2_3
U3copy_to_user_nop_2_3
:
mov
PRIMARY_CONTEXT
,
%
o3
stxa
%
g0
,
[%
o3
]
ASI_DMMU
!
Flush
P
-
cache
stxa
%
g3
,
[%
g0
]
ASI_DCU_CONTROL_REG
!
Disable
P
-
cache
#endif
membar
#
Sync
!
MS
Group26
(
7
-
cycle
stall
)
/
*
Now
we
copy
the
(
len
modulo
64
)
bytes
at
the
end
.
...
...
arch/sparc64/lib/U3memcpy.S
View file @
932d934b
...
...
@@ -7,6 +7,8 @@
#ifdef __KERNEL__
#include <asm/visasm.h>
#include <asm/asi.h>
#include <asm/dcu.h>
#include <asm/spitfire.h>
#undef SMALL_COPY_USES_FPU
#else
#define ASI_BLK_P 0xf0
...
...
@@ -109,6 +111,16 @@ U3memcpy_enter:
.
align
64
U3memcpy_begin
:
#ifdef __KERNEL__
.
globl
U3memcpy_nop_1_6
U3memcpy_nop_1_6
:
ldxa
[%
g0
]
ASI_DCU_CONTROL_REG
,
%
g3
sethi
%
uhi
(
DCU_PE
),
%
o3
sllx
%
o3
,
32
,
%
o3
or
%
g3
,
%
o3
,
%
o3
stxa
%
o3
,
[%
g0
]
ASI_DCU_CONTROL_REG
!
Enable
P
-
cache
membar
#
Sync
#endif
prefetch
[%
o1
+
0x000
],
#
one_read
!
MS
Group1
prefetch
[%
o1
+
0x040
],
#
one_read
!
MS
Group2
andn
%
o2
,
(
0x40
-
1
),
%
o4
!
A0
...
...
@@ -249,6 +261,13 @@ U3memcpy_loopfini:
stda
%f16
,
[%
o0
]
ASI_BLK_P
!
MS
add
%
o0
,
0x40
,
%
o0
!
A0
add
%
o1
,
0x40
,
%
o1
!
A1
#ifdef __KERNEL__
.
globl
U3memcpy_nop_2_3
U3memcpy_nop_2_3
:
mov
PRIMARY_CONTEXT
,
%
o3
stxa
%
g0
,
[%
o3
]
ASI_DMMU
!
Flush
P
-
cache
stxa
%
g3
,
[%
g0
]
ASI_DCU_CONTROL_REG
!
Disable
P
-
cache
#endif
membar
#
Sync
!
MS
Group26
(
7
-
cycle
stall
)
/
*
Now
we
copy
the
(
len
modulo
64
)
bytes
at
the
end
.
...
...
arch/sparc64/lib/VIScopy.S
View file @
932d934b
...
...
@@ -368,6 +368,28 @@ bcopy: or %o0, 0, %g3 ! IEU0 Group
or
%
g3
,
%
lo
(
NOP
),
%
g3
; \
stw
%
g3
,
[%
g2
+
0x4
]
; \
flush
%
g2
;
#define ULTRA3_PCACHE_DO_NOP(symbol) \
sethi
%
hi
(
symbol
##
_nop_1_6
),
%
g1
; \
or
%
g1
,
%
lo
(
symbol
##
_nop_1_6
),
%
g1
; \
sethi
%
hi
(
NOP
),
%
g2
; \
stw
%
g2
,
[%
g1
+
0x00
]
; \
stw
%
g2
,
[%
g1
+
0x04
]
; \
flush
%
g1
+
0x00
; \
stw
%
g2
,
[%
g1
+
0x08
]
; \
stw
%
g2
,
[%
g1
+
0x0c
]
; \
flush
%
g1
+
0x08
; \
stw
%
g2
,
[%
g1
+
0x10
]
; \
stw
%
g2
,
[%
g1
+
0x04
]
; \
flush
%
g1
+
0x10
; \
sethi
%
hi
(
symbol
##
_nop_2_3
),
%
g1
; \
or
%
g1
,
%
lo
(
symbol
##
_nop_2_3
),
%
g1
; \
stw
%
g2
,
[%
g1
+
0x00
]
; \
stw
%
g2
,
[%
g1
+
0x04
]
; \
flush
%
g1
+
0x00
; \
stw
%
g2
,
[%
g1
+
0x08
]
; \
flush
%
g1
+
0x08
;
#include <asm/dcu.h>
.
globl
cheetah_patch_copyops
cheetah_patch_copyops
:
...
...
@@ -375,6 +397,17 @@ cheetah_patch_copyops:
ULTRA3_DO_PATCH
(
__copy_from_user
,
U3copy_from_user
)
ULTRA3_DO_PATCH
(
__copy_to_user
,
U3copy_to_user
)
ULTRA3_DO_PATCH
(
__copy_in_user
,
U3copy_in_user
)
ldxa
[%
g0
]
ASI_DCU_CONTROL_REG
,
%
g3
sethi
%
uhi
(
DCU_PE
),
%
o3
sllx
%
o3
,
32
,
%
o3
andcc
%
g3
,
%
o3
,
%
g0
be
,
pn
%
xcc
,
pcache_disabled
nop
ULTRA3_PCACHE_DO_NOP
(
U3memcpy
)
ULTRA3_PCACHE_DO_NOP
(
U3copy_from_user
)
ULTRA3_PCACHE_DO_NOP
(
U3copy_to_user
)
ULTRA3_PCACHE_DO_NOP
(
cheetah_copy_user_page
)
pcache_disabled
:
retl
nop
#undef BRANCH_ALWAYS
...
...
arch/sparc64/lib/blockops.S
View file @
932d934b
...
...
@@ -9,6 +9,8 @@
#include <asm/visasm.h>
#include <asm/thread_info.h>
#include <asm/page.h>
#include <asm/dcu.h>
#include <asm/spitfire.h>
#include <asm/pgtable.h>
#define TOUCH(reg0, reg1, reg2, reg3, reg4, reg5, reg6, reg7) \
...
...
@@ -111,6 +113,15 @@ cheetah_patch_1:
nop
cheetah_copy_user_page
:
.
globl
cheetah_copy_user_page_nop_1_6
cheetah_copy_user_page_nop_1_6
:
ldxa
[%
g0
]
ASI_DCU_CONTROL_REG
,
%
g3
sethi
%
uhi
(
DCU_PE
),
%
o2
sllx
%
o2
,
32
,
%
o2
or
%
g3
,
%
o2
,
%
o2
stxa
%
o2
,
[%
g0
]
ASI_DCU_CONTROL_REG
!
Enable
P
-
cache
membar
#
Sync
sethi
%
hi
((
PAGE_SIZE
/
64
)-
7
),
%
o2
!
A0
Group
prefetch
[%
o1
+
0x000
],
#
one_read
!
MS
or
%
o2
,
%
lo
((
PAGE_SIZE
/
64
)-
7
),
%
o2
!
A1
Group
...
...
@@ -202,6 +213,11 @@ cheetah_copy_user_page:
fmovd
%f12
,
%f44
!
FGA
Group
fmovd
%f14
,
%f46
!
FGA
Group
stda
%f32
,
[%
o0
]
ASI_BLK_P
!
MS
.
globl
cheetah_copy_user_page_nop_2_3
cheetah_copy_user_page_nop_2_3
:
mov
PRIMARY_CONTEXT
,
%
o2
stxa
%
g0
,
[%
o2
]
ASI_DMMU
!
Flush
P
-
cache
stxa
%
g3
,
[%
g0
]
ASI_DCU_CONTROL_REG
!
Disable
P
-
cache
ba
,
a
,
pt
%
xcc
,
copy_user_page_continue
spitfire_copy_user_page
:
...
...
include/asm-generic/siginfo.h
View file @
932d934b
...
...
@@ -8,9 +8,21 @@ typedef union sigval {
void
*
sival_ptr
;
}
sigval_t
;
/*
* This is the size (including padding) of the part of the
* struct siginfo that is before the union.
*/
#ifndef __ARCH_SI_PREAMBLE_SIZE
#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
#endif
#define SI_MAX_SIZE 128
#ifndef SI_PAD_SIZE
#define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int)) - 3)
#define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_SI_PREAMBLE_SIZE) / sizeof(int))
#endif
#ifndef __ARCH_SI_UID_T
#define __ARCH_SI_UID_T uid_t
#endif
#ifndef HAVE_ARCH_SIGINFO_T
...
...
@@ -26,7 +38,7 @@ typedef struct siginfo {
/* kill() */
struct
{
pid_t
_pid
;
/* sender's pid */
uid_t
_uid
;
/* sender's uid */
__ARCH_SI_UID_T
_uid
;
/* sender's uid */
}
_kill
;
/* POSIX.1b timers */
...
...
@@ -38,14 +50,14 @@ typedef struct siginfo {
/* POSIX.1b signals */
struct
{
pid_t
_pid
;
/* sender's pid */
uid_t
_uid
;
/* sender's uid */
__ARCH_SI_UID_T
_uid
;
/* sender's uid */
sigval_t
_sigval
;
}
_rt
;
/* SIGCHLD */
struct
{
pid_t
_pid
;
/* which child */
uid_t
_uid
;
/* sender's uid */
__ARCH_SI_UID_T
_uid
;
/* sender's uid */
int
_status
;
/* exit code */
clock_t
_utime
;
clock_t
_stime
;
...
...
@@ -54,6 +66,9 @@ typedef struct siginfo {
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
struct
{
void
*
_addr
;
/* faulting insn/memory ref. */
#ifdef __ARCH_SI_TRAPNO
int
_trapno
;
/* TRAP # which caused the signal */
#endif
}
_sigfault
;
/* SIGPOLL */
...
...
@@ -80,6 +95,9 @@ typedef struct siginfo {
#define si_int _sifields._rt._sigval.sival_int
#define si_ptr _sifields._rt._sigval.sival_ptr
#define si_addr _sifields._sigfault._addr
#ifdef __ARCH_SI_TRAPNO
#define si_trapno _sifields._sigfault._trapno
#endif
#define si_band _sifields._sigpoll._band
#define si_fd _sifields._sigpoll._fd
...
...
@@ -244,7 +262,7 @@ static inline void copy_siginfo(struct siginfo *to, struct siginfo *from)
memcpy
(
to
,
from
,
sizeof
(
*
to
));
else
/* _sigchld is currently the largest know union member */
memcpy
(
to
,
from
,
3
*
sizeof
(
int
)
+
sizeof
(
from
->
_sifields
.
_sigchld
));
memcpy
(
to
,
from
,
__ARCH_SI_PREAMBLE_SIZE
+
sizeof
(
from
->
_sifields
.
_sigchld
));
}
#endif
...
...
include/asm-sparc/siginfo.h
View file @
932d934b
...
...
@@ -5,64 +5,11 @@
#ifndef _SPARC_SIGINFO_H
#define _SPARC_SIGINFO_H
#define HAVE_ARCH_SIGINFO_T
#define HAVE_ARCH_COPY_SIGINFO
#define HAVE_ARCH_COPY_SIGINFO_TO_USER
#define __ARCH_SI_UID_T unsigned int
#define __ARCH_SI_TRAPNO
#include <asm-generic/siginfo.h>
typedef
struct
siginfo
{
int
si_signo
;
int
si_errno
;
int
si_code
;
union
{
int
_pad
[
SI_PAD_SIZE
];
/* kill() */
struct
{
pid_t
_pid
;
/* sender's pid */
unsigned
int
_uid
;
/* sender's uid */
}
_kill
;
/* POSIX.1b timers */
struct
{
unsigned
int
_timer1
;
unsigned
int
_timer2
;
}
_timer
;
/* POSIX.1b signals */
struct
{
pid_t
_pid
;
/* sender's pid */
unsigned
int
_uid
;
/* sender's uid */
sigval_t
_sigval
;
}
_rt
;
/* SIGCHLD */
struct
{
pid_t
_pid
;
/* which child */
unsigned
int
_uid
;
/* sender's uid */
int
_status
;
/* exit code */
clock_t
_utime
;
clock_t
_stime
;
}
_sigchld
;
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */
struct
{
void
*
_addr
;
/* faulting insn/memory ref. */
int
_trapno
;
/* TRAP # which caused the signal */
}
_sigfault
;
/* SIGPOLL */
struct
{
int
_band
;
/* POLL_IN, POLL_OUT, POLL_MSG */
int
_fd
;
}
_sigpoll
;
}
_sifields
;
}
siginfo_t
;
#define si_trapno _sifields._sigfault._trapno
#define SI_NOINFO 32767
/* no information in siginfo_t */
/*
...
...
@@ -71,19 +18,4 @@ typedef struct siginfo {
#define EMT_TAGOVF (__SI_FAULT|1)
/* tag overflow */
#define NSIGEMT 1
#ifdef __KERNEL__
#include <linux/string.h>
extern
inline
void
copy_siginfo
(
siginfo_t
*
to
,
siginfo_t
*
from
)
{
if
(
from
->
si_code
<
0
)
*
to
=
*
from
;
else
/* _sigchld is currently the largest know union member */
memcpy
(
to
,
from
,
3
*
sizeof
(
int
)
+
sizeof
(
from
->
_sifields
.
_sigchld
));
}
#endif
/* __KERNEL__ */
#endif
/* !(_SPARC_SIGINFO_H) */
include/asm-sparc/unistd.h
View file @
932d934b
...
...
@@ -223,7 +223,7 @@
#define __NR_readahead 205
/* Linux Specific */
#define __NR_socketcall 206
/* Linux Specific */
#define __NR_syslog 207
/* Linux Specific */
/* #define __NR_olduname 208
Linux Specific */
#define __NR_lookup_dcookie 208
/*
Linux Specific */
/* #define __NR_iopl 209 Linux Specific - i386 specific, unused */
/* #define __NR_idle 210 Linux Specific - was sys_idle, now unused */
/* #define __NR_vm86 211 Linux Specific - i386 specific, unused */
...
...
include/asm-sparc64/siginfo.h
View file @
932d934b
#ifndef _SPARC64_SIGINFO_H
#define _SPARC64_SIGINFO_H
#define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int)) - 4)
#define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3)
#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE/sizeof(int)) - 4)
#define SIGEV_PAD_SIZE32 ((SIGEV_MAX_SIZE/sizeof(int)) - 3)
#define HAVE_ARCH_SIGINFO_T
#define HAVE_ARCH_COPY_SIGINFO
#define HAVE_ARCH_COPY_SIGINFO_TO_USER
#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
#define __ARCH_SI_TRAPNO
#include <asm-generic/siginfo.h>
...
...
@@ -20,60 +18,6 @@ typedef union sigval32 {
u32
sival_ptr
;
}
sigval_t32
;
#endif
/* __KERNEL__ */
typedef
struct
siginfo
{
int
si_signo
;
int
si_errno
;
int
si_code
;
union
{
int
_pad
[
SI_PAD_SIZE
];
/* kill() */
struct
{
pid_t
_pid
;
/* sender's pid */
uid_t
_uid
;
/* sender's uid */
}
_kill
;
/* POSIX.1b timers */
struct
{
unsigned
int
_timer1
;
unsigned
int
_timer2
;
}
_timer
;
/* POSIX.1b signals */
struct
{
pid_t
_pid
;
/* sender's pid */
uid_t
_uid
;
/* sender's uid */
sigval_t
_sigval
;
}
_rt
;
/* SIGCHLD */
struct
{
pid_t
_pid
;
/* which child */
uid_t
_uid
;
/* sender's uid */
int
_status
;
/* exit code */
clock_t
_utime
;
clock_t
_stime
;
}
_sigchld
;
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */
struct
{
void
*
_addr
;
/* faulting insn/memory ref. */
int
_trapno
;
/* TRAP # which caused the signal */
}
_sigfault
;
/* SIGPOLL */
struct
{
long
_band
;
/* POLL_IN, POLL_OUT, POLL_MSG */
int
_fd
;
}
_sigpoll
;
}
_sifields
;
}
siginfo_t
;
#ifdef __KERNEL__
typedef
struct
siginfo32
{
int
si_signo
;
int
si_errno
;
...
...
@@ -126,8 +70,6 @@ typedef struct siginfo32 {
#endif
/* __KERNEL__ */
#define si_trapno _sifields._sigfault._trapno
#define SI_NOINFO 32767
/* no information in siginfo_t */
/*
...
...
@@ -152,17 +94,6 @@ typedef struct sigevent32 {
}
_sigev_un
;
}
sigevent_t32
;
#include <linux/string.h>
static
inline
void
copy_siginfo
(
siginfo_t
*
to
,
siginfo_t
*
from
)
{
if
(
from
->
si_code
<
0
)
*
to
=
*
from
;
else
/* _sigchld is currently the largest know union member */
memcpy
(
to
,
from
,
4
*
sizeof
(
int
)
+
sizeof
(
from
->
_sifields
.
_sigchld
));
}
extern
int
copy_siginfo_to_user32
(
siginfo_t32
*
to
,
siginfo_t
*
from
);
#endif
/* __KERNEL__ */
...
...
include/asm-sparc64/unistd.h
View file @
932d934b
...
...
@@ -223,7 +223,7 @@
#define __NR_readahead 205
/* Linux Specific */
#define __NR_socketcall 206
/* Linux Specific */
#define __NR_syslog 207
/* Linux Specific */
/* #define __NR_olduname 208
Linux Specific */
#define __NR_lookup_dcookie 208
/*
Linux Specific */
/* #define __NR_iopl 209 Linux Specific - i386 specific, unused */
/* #define __NR_idle 210 Linux Specific - was sys_idle, now unused */
/* #define __NR_vm86 211 Linux Specific - i386 specific, unused */
...
...
kernel/signal.c
View file @
932d934b
...
...
@@ -1427,6 +1427,9 @@ int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from)
break
;
case
__SI_FAULT
:
err
|=
__put_user
(
from
->
si_addr
,
&
to
->
si_addr
);
#ifdef __ARCH_SI_TRAPNO
err
|=
__put_user
(
from
->
si_trapno
,
&
to
->
si_trapno
);
#endif
break
;
case
__SI_CHLD
:
err
|=
__put_user
(
from
->
si_pid
,
&
to
->
si_pid
);
...
...
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