Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Kirill Smelkov
linux
Commits
c7e6d792
Commit
c7e6d792
authored
10 years ago
by
Vineet Gupta
Browse files
Options
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:
EXCEPTION_EPILOGUE
debug_marker_syscall
:
rtie
END
(
ret_from_exception
)
This diff is collapsed.
Click to expand it.
arch/arc/kernel/entry.S
View file @
c7e6d792
...
...
@@ -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 #############################
; ---------------------------------------------
...
...
@@ -338,53 +387,6 @@ resume_kernel_mode:
#endif
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 ##########################
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
#####
DONT
ADD
CODE
HERE
-
.
Lrestore_regs
actually
follows
in
entry
-<
isa
>
.
S
; Reset to .text as this file is included in entry-<isa>.S
.
section
.
text
,
"ax"
,
@
progbits
#endif
This diff is collapsed.
Click to expand it.
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