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
0430f2f2
Commit
0430f2f2
authored
Dec 23, 2012
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xtensa: switch to generic sigaltstack
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
0aa0203f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
4 additions
and
18 deletions
+4
-18
arch/xtensa/Kconfig
arch/xtensa/Kconfig
+1
-0
arch/xtensa/include/asm/syscall.h
arch/xtensa/include/asm/syscall.h
+0
-1
arch/xtensa/include/uapi/asm/unistd.h
arch/xtensa/include/uapi/asm/unistd.h
+1
-1
arch/xtensa/kernel/signal.c
arch/xtensa/kernel/signal.c
+2
-16
No files found.
arch/xtensa/Kconfig
View file @
0430f2f2
...
@@ -16,6 +16,7 @@ config XTENSA
...
@@ -16,6 +16,7 @@ config XTENSA
select ARCH_WANT_OPTIONAL_GPIOLIB
select ARCH_WANT_OPTIONAL_GPIOLIB
select CLONE_BACKWARDS
select CLONE_BACKWARDS
select IRQ_DOMAIN
select IRQ_DOMAIN
select GENERIC_SIGALTSTACK
help
help
Xtensa processors are 32-bit RISC machines designed by Tensilica
Xtensa processors are 32-bit RISC machines designed by Tensilica
primarily for embedded systems. These processors are both
primarily for embedded systems. These processors are both
...
...
arch/xtensa/include/asm/syscall.h
View file @
0430f2f2
...
@@ -12,7 +12,6 @@ struct pt_regs;
...
@@ -12,7 +12,6 @@ struct pt_regs;
asmlinkage
long
xtensa_ptrace
(
long
,
long
,
long
,
long
);
asmlinkage
long
xtensa_ptrace
(
long
,
long
,
long
,
long
);
asmlinkage
long
xtensa_sigreturn
(
struct
pt_regs
*
);
asmlinkage
long
xtensa_sigreturn
(
struct
pt_regs
*
);
asmlinkage
long
xtensa_rt_sigreturn
(
struct
pt_regs
*
);
asmlinkage
long
xtensa_rt_sigreturn
(
struct
pt_regs
*
);
asmlinkage
long
xtensa_sigaltstack
(
struct
pt_regs
*
regs
);
asmlinkage
long
xtensa_shmat
(
int
,
char
__user
*
,
int
);
asmlinkage
long
xtensa_shmat
(
int
,
char
__user
*
,
int
);
asmlinkage
long
xtensa_fadvise64_64
(
int
,
int
,
asmlinkage
long
xtensa_fadvise64_64
(
int
,
int
,
unsigned
long
long
,
unsigned
long
long
);
unsigned
long
long
,
unsigned
long
long
);
...
...
arch/xtensa/include/uapi/asm/unistd.h
View file @
0430f2f2
...
@@ -483,7 +483,7 @@ __SYSCALL(222, sys_ni_syscall, 0)
...
@@ -483,7 +483,7 @@ __SYSCALL(222, sys_ni_syscall, 0)
#define __NR_restart_syscall 223
#define __NR_restart_syscall 223
__SYSCALL
(
223
,
sys_restart_syscall
,
0
)
__SYSCALL
(
223
,
sys_restart_syscall
,
0
)
#define __NR_sigaltstack 224
#define __NR_sigaltstack 224
__SYSCALL
(
224
,
xtensa
_sigaltstack
,
2
)
__SYSCALL
(
224
,
sys
_sigaltstack
,
2
)
#define __NR_rt_sigreturn 225
#define __NR_rt_sigreturn 225
__SYSCALL
(
225
,
xtensa_rt_sigreturn
,
1
)
__SYSCALL
(
225
,
xtensa_rt_sigreturn
,
1
)
#define __NR_rt_sigaction 226
#define __NR_rt_sigaction 226
...
...
arch/xtensa/kernel/signal.c
View file @
0430f2f2
...
@@ -265,7 +265,7 @@ asmlinkage long xtensa_rt_sigreturn(long a0, long a1, long a2, long a3,
...
@@ -265,7 +265,7 @@ asmlinkage long xtensa_rt_sigreturn(long a0, long a1, long a2, long a3,
ret
=
regs
->
areg
[
2
];
ret
=
regs
->
areg
[
2
];
if
(
do_sigaltstack
(
&
frame
->
uc
.
uc_stack
,
NULL
,
regs
->
areg
[
1
])
==
-
EFAULT
)
if
(
restore_altstack
(
&
frame
->
uc
.
uc_stack
)
)
goto
badframe
;
goto
badframe
;
return
ret
;
return
ret
;
...
@@ -368,11 +368,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
...
@@ -368,11 +368,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
err
|=
__put_user
(
0
,
&
frame
->
uc
.
uc_flags
);
err
|=
__put_user
(
0
,
&
frame
->
uc
.
uc_flags
);
err
|=
__put_user
(
0
,
&
frame
->
uc
.
uc_link
);
err
|=
__put_user
(
0
,
&
frame
->
uc
.
uc_link
);
err
|=
__put_user
((
void
*
)
current
->
sas_ss_sp
,
err
|=
__save_altstack
(
&
frame
->
uc
.
uc_stack
,
regs
->
areg
[
1
]);
&
frame
->
uc
.
uc_stack
.
ss_sp
);
err
|=
__put_user
(
sas_ss_flags
(
regs
->
areg
[
1
]),
&
frame
->
uc
.
uc_stack
.
ss_flags
);
err
|=
__put_user
(
current
->
sas_ss_size
,
&
frame
->
uc
.
uc_stack
.
ss_size
);
err
|=
setup_sigcontext
(
frame
,
regs
);
err
|=
setup_sigcontext
(
frame
,
regs
);
err
|=
__copy_to_user
(
&
frame
->
uc
.
uc_sigmask
,
set
,
sizeof
(
*
set
));
err
|=
__copy_to_user
(
&
frame
->
uc
.
uc_sigmask
,
set
,
sizeof
(
*
set
));
...
@@ -424,16 +420,6 @@ static int setup_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
...
@@ -424,16 +420,6 @@ static int setup_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
return
-
EFAULT
;
return
-
EFAULT
;
}
}
asmlinkage
long
xtensa_sigaltstack
(
const
stack_t
__user
*
uss
,
stack_t
__user
*
uoss
,
long
a2
,
long
a3
,
long
a4
,
long
a5
,
struct
pt_regs
*
regs
)
{
return
do_sigaltstack
(
uss
,
uoss
,
regs
->
areg
[
1
]);
}
/*
/*
* Note that 'init' is a special process: it doesn't get signals it doesn't
* Note that 'init' is a special process: it doesn't get signals it doesn't
* want to handle. Thus you cannot kill init even with a SIGKILL even by
* want to handle. Thus you cannot kill init even with a SIGKILL even by
...
...
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