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
Kirill Smelkov
linux
Commits
c7e6d792
Commit
c7e6d792
authored
Mar 10, 2015
by
Vineet Gupta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ARC: entry.S: move some code around for cache locality in return path
Signed-off-by:
Vineet Gupta
<
vgupta@synopsys.com
>
parent
6d1a20b1
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
48 deletions
+52
-48
arch/arc/kernel/entry-compact.S
arch/arc/kernel/entry-compact.S
+2
-0
arch/arc/kernel/entry.S
arch/arc/kernel/entry.S
+50
-48
No files found.
arch/arc/kernel/entry-compact.S
View file @
c7e6d792
...
@@ -391,3 +391,5 @@ not_level1_interrupt:
...
@@ -391,3 +391,5 @@ not_level1_interrupt:
EXCEPTION_EPILOGUE
EXCEPTION_EPILOGUE
debug_marker_syscall
:
debug_marker_syscall
:
rtie
rtie
END
(
ret_from_exception
)
arch/arc/kernel/entry.S
View file @
c7e6d792
...
@@ -24,6 +24,55 @@
...
@@ -24,6 +24,55 @@
*------------------------------------------------------------------
*------------------------------------------------------------------
*/
*/
;################### Special Sys Call Wrappers ##########################
ENTRY
(
sys_clone_wrapper
)
SAVE_CALLEE_SAVED_USER
bl
@
sys_clone
DISCARD_CALLEE_SAVED_USER
GET_CURR_THR_INFO_FLAGS
r10
btst
r10
,
TIF_SYSCALL_TRACE
bnz
tracesys_exit
b
ret_from_system_call
END
(
sys_clone_wrapper
)
ENTRY
(
ret_from_fork
)
; when the forked child comes here from the __switch_to function
; r0 has the last task pointer.
; put last task in scheduler queue
bl
@
schedule_tail
ld
r9
,
[
sp
,
PT_status32
]
brne
r9
,
0
,
1
f
jl.d
[
r14
]
; kernel thread entry point
mov
r0
,
r13
; (see PF_KTHREAD block in copy_thread)
1
:
; Return to user space
; 1. Any forked task (Reach here via BRne above)
; 2. First ever init task (Reach here via return from JL above)
; This is the historic "kernel_execve" use-case, to return to init
; user mode, in a round about way since that is always done from
; a kernel thread which is executed via JL above but always returns
; out whenever kernel_execve (now inline do_fork()) is involved
b
ret_from_exception
END
(
ret_from_fork
)
#ifdef CONFIG_ARC_DW2_UNWIND
; Workaround for bug 94179 (STAR ):
; Despite -fasynchronous-unwind-tables, linker is not making dwarf2 unwinder
; section (.debug_frame) as loadable. So we force it here.
; This also fixes STAR 9000487933 where the prev-workaround (objcopy --setflag)
; would not work after a clean build due to kernel build system dependencies.
.
section
.
debug_frame
,
"wa"
,
@
progbits
; Reset to .text as this file is included in entry-<isa>.S
.
section
.
text
,
"ax"
,
@
progbits
#endif
;################### Non TLB Exception Handling #############################
;################### Non TLB Exception Handling #############################
; ---------------------------------------------
; ---------------------------------------------
...
@@ -338,53 +387,6 @@ resume_kernel_mode:
...
@@ -338,53 +387,6 @@ resume_kernel_mode:
#endif
#endif
b
.
Lrestore_regs
b
.
Lrestore_regs
END
(
ret_from_exception
)
ENTRY
(
ret_from_fork
)
; when the forked child comes here from the __switch_to function
; r0 has the last task pointer.
; put last task in scheduler queue
bl
@
schedule_tail
ld
r9
,
[
sp
,
PT_status32
]
brne
r9
,
0
,
1
f
jl.d
[
r14
]
; kernel thread entry point
mov
r0
,
r13
; (see PF_KTHREAD block in copy_thread)
1
:
; Return to user space
; 1. Any forked task (Reach here via BRne above)
; 2. First ever init task (Reach here via return from JL above)
; This is the historic "kernel_execve" use-case, to return to init
; user mode, in a round about way since that is always done from
; a kernel thread which is executed via JL above but always returns
; out whenever kernel_execve (now inline do_fork()) is involved
b
ret_from_exception
END
(
ret_from_fork
)
;################### Special Sys Call Wrappers ##########################
#####
DONT
ADD
CODE
HERE
-
.
Lrestore_regs
actually
follows
in
entry
-<
isa
>
.
S
ENTRY
(
sys_clone_wrapper
)
SAVE_CALLEE_SAVED_USER
bl
@
sys_clone
DISCARD_CALLEE_SAVED_USER
GET_CURR_THR_INFO_FLAGS
r10
btst
r10
,
TIF_SYSCALL_TRACE
bnz
tracesys_exit
b
ret_from_system_call
END
(
sys_clone_wrapper
)
#ifdef CONFIG_ARC_DW2_UNWIND
; Workaround for bug 94179 (STAR ):
; Despite -fasynchronous-unwind-tables, linker is not making dwarf2 unwinder
; section (.debug_frame) as loadable. So we force it here.
; This also fixes STAR 9000487933 where the prev-workaround (objcopy --setflag)
; would not work after a clean build due to kernel build system dependencies.
.
section
.
debug_frame
,
"wa"
,
@
progbits
; Reset to .text as this file is included in entry-<isa>.S
.
section
.
text
,
"ax"
,
@
progbits
#endif
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