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
6e754210
Commit
6e754210
authored
Sep 19, 2012
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mn10300: switch to generic kernel_execve()
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
8f1597e9
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
13 additions
and
49 deletions
+13
-49
arch/mn10300/include/asm/frame.inc
arch/mn10300/include/asm/frame.inc
+1
-1
arch/mn10300/include/asm/processor.h
arch/mn10300/include/asm/processor.h
+3
-10
arch/mn10300/include/asm/unistd.h
arch/mn10300/include/asm/unistd.h
+1
-0
arch/mn10300/kernel/Makefile
arch/mn10300/kernel/Makefile
+1
-1
arch/mn10300/kernel/entry.S
arch/mn10300/kernel/entry.S
+7
-0
arch/mn10300/kernel/kernel_execve.S
arch/mn10300/kernel/kernel_execve.S
+0
-37
No files found.
arch/mn10300/include/asm/frame.inc
View file @
6e754210
...
@@ -61,7 +61,7 @@
...
@@ -61,7 +61,7 @@
###############################################################################
###############################################################################
.
macro
RESTORE_ALL
.
macro
RESTORE_ALL
# peel back the stack to the calling frame
# peel back the stack to the calling frame
# -
this permits execve() to discard extra frames due to kernel syscalls
# -
we need that when returning from interrupts to kernel mode
GET_THREAD_INFO
a0
GET_THREAD_INFO
a0
mov
(
TI_frame
,
a0
),
fp
mov
(
TI_frame
,
a0
),
fp
mov
fp
,
sp
mov
fp
,
sp
...
...
arch/mn10300/include/asm/processor.h
View file @
6e754210
...
@@ -119,20 +119,13 @@ struct thread_struct {
...
@@ -119,20 +119,13 @@ struct thread_struct {
/*
/*
* do necessary setup to start up a newly executed thread
* do necessary setup to start up a newly executed thread
* - need to discard the frame stacked by the kernel thread invoking the execve
* syscall (see RESTORE_ALL macro)
*/
*/
static
inline
void
start_thread
(
struct
pt_regs
*
regs
,
static
inline
void
start_thread
(
struct
pt_regs
*
regs
,
unsigned
long
new_pc
,
unsigned
long
new_sp
)
unsigned
long
new_pc
,
unsigned
long
new_sp
)
{
{
struct
thread_info
*
ti
=
current_thread_info
();
regs
->
epsw
=
EPSW_nSL
|
EPSW_IE
|
EPSW_IM
;
struct
pt_regs
*
frame0
;
regs
->
pc
=
new_pc
;
regs
->
sp
=
new_sp
;
frame0
=
thread_info_to_uregs
(
ti
);
frame0
->
epsw
=
EPSW_nSL
|
EPSW_IE
|
EPSW_IM
;
frame0
->
pc
=
new_pc
;
frame0
->
sp
=
new_sp
;
ti
->
frame
=
frame0
;
}
}
...
...
arch/mn10300/include/asm/unistd.h
View file @
6e754210
...
@@ -383,6 +383,7 @@
...
@@ -383,6 +383,7 @@
#define __ARCH_WANT_SYS_RT_SIGACTION
#define __ARCH_WANT_SYS_RT_SIGACTION
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
#define __ARCH_WANT_SYS_RT_SIGSUSPEND
#define __ARCH_WANT_SYS_EXECVE
#define __ARCH_WANT_SYS_EXECVE
#define __ARCH_WANT_KERNEL_EXECVE
/*
/*
* "Conditional" syscalls
* "Conditional" syscalls
...
...
arch/mn10300/kernel/Makefile
View file @
6e754210
...
@@ -8,7 +8,7 @@ fpu-obj-$(CONFIG_FPU) := fpu.o fpu-low.o
...
@@ -8,7 +8,7 @@ fpu-obj-$(CONFIG_FPU) := fpu.o fpu-low.o
obj-y
:=
process.o signal.o entry.o traps.o irq.o
\
obj-y
:=
process.o signal.o entry.o traps.o irq.o
\
ptrace.o setup.o time.o sys_mn10300.o io.o
\
ptrace.o setup.o time.o sys_mn10300.o io.o
\
switch_to.o mn10300_ksyms.o
kernel_execve.o
$
(
fpu-obj-y
)
\
switch_to.o mn10300_ksyms.o
$
(
fpu-obj-y
)
\
csrc-mn10300.o cevt-mn10300.o
csrc-mn10300.o cevt-mn10300.o
obj-$(CONFIG_SMP)
+=
smp.o smp-low.o
obj-$(CONFIG_SMP)
+=
smp.o smp-low.o
...
...
arch/mn10300/kernel/entry.S
View file @
6e754210
...
@@ -62,6 +62,13 @@ ENTRY(ret_from_kernel_thread)
...
@@ -62,6 +62,13 @@ ENTRY(ret_from_kernel_thread)
calls
(
a0
)
calls
(
a0
)
jmp
sys_exit
jmp
sys_exit
ENTRY
(
ret_from_kernel_execve
)
add
-
12
,
d0
/*
pt_regs
->
frame
*/
mov
d0
,
sp
GET_THREAD_INFO
a2
clr
d0
jmp
syscall_exit
###############################################################################
###############################################################################
#
#
#
system
call
handler
#
system
call
handler
...
...
arch/mn10300/kernel/kernel_execve.S
deleted
100644 → 0
View file @
8f1597e9
/*
MN10300
In
-
kernel
program
execution
*
*
Copyright
(
C
)
2007
Red
Hat
,
Inc
.
All
Rights
Reserved
.
*
Written
by
David
Howells
(
dhowells
@
redhat
.
com
)
*
*
This
program
is
free
software
; you can redistribute it and/or
*
modify
it
under
the
terms
of
the
GNU
General
Public
Licence
*
as
published
by
the
Free
Software
Foundation
; either version
*
2
of
the
Licence
,
or
(
at
your
option
)
any
later
version
.
*/
#include <linux/linkage.h>
#include <asm/unistd.h>
###############################################################################
#
#
Do
a
system
call
from
kernel
instead
of
calling
sys_execve
so
we
end
up
with
#
proper
pt_regs
.
#
#
int
kernel_execve
(
const
char
*
filename
,
char
*
const
argv
[],
#
char
*
const
envp
[])
#
#
On
entry
:
D0
/
D1
/
8
(
SP
)
:
arguments
to
function
#
On
return
:
D0
:
syscall
return
.
#
###############################################################################
.
globl
kernel_execve
.
type
kernel_execve
,
@
function
kernel_execve
:
mov
a3
,
a1
mov
d0
,
a0
mov
(
12
,
sp
),
a3
mov
+
__NR_execve
,
d0
syscall
0
mov
a1
,
a3
rets
.
size
kernel_execve
,
.
-
kernel_execve
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