Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
xenomai
ipipe
Commits
3e108e48
Commit
3e108e48
authored
Apr 03, 2015
by
Don Mahurin
Committed by
Philippe Gerum
Feb 28, 2016
Browse files
arm64/ipipe: entry.S: move ipipe code, add more ipipe code from arm entry-*.S for arm64
parent
34c6aea8
Changes
1
Hide whitespace changes
Inline
Side-by-side
arch/arm64/kernel/entry.S
View file @
3e108e48
...
...
@@ -189,12 +189,12 @@ tsk .req x28 // current thread_info
.
macro
irq_handler
adrp
x1
,
handle_arch_irq
ldr
x1
,
[
x1
,
#
:
lo12
:
handle_arch_irq
]
mov
x0
,
sp
blr
x1
#ifdef CONFIG_IPIPE
bl
__ipipe_check_root_interruptible
cmp
x0
,
#
1
#endif /* CONFIG_IPIPE */
mov
x0
,
sp
blr
x1
.
endm
.
text
...
...
@@ -368,6 +368,9 @@ el1_irq:
irq_handler
#ifdef CONFIG_IPIPE
bne
__ipipe_fast_svc_irq_exit
#endif
#ifdef CONFIG_PREEMPT
get_thread_info
tsk
ldr
w24
,
[
tsk
,
#
TI_PREEMPT
]
//
get
preempt
count
...
...
@@ -377,6 +380,9 @@ el1_irq:
bl
el1_preempt
1
:
#endif
#ifdef CONFIG_IPIPE
__ipipe_fast_svc_irq_exit
:
#endif
#ifdef CONFIG_TRACE_IRQFLAGS
bl
trace_hardirqs_on
#endif
...
...
@@ -386,7 +392,11 @@ ENDPROC(el1_irq)
#ifdef CONFIG_PREEMPT
el1_preempt
:
mov
x24
,
lr
#ifndef CONFIG_IPIPE
1
:
bl
preempt_schedule_irq
//
irq
en
/
disable
is
done
inside
#else /* CONFIG_IPIPE */
1
:
bl
__ipipe_preempt_schedule_irq
//
irq
en
/
disable
is
done
inside
#endif /* CONFIG_IPIPE */
ldr
x0
,
[
tsk
,
#
TI_FLAGS
]
//
get
new
tasks
TI_FLAGS
tbnz
x0
,
#
TIF_NEED_RESCHED
,
1
b
//
needs
rescheduling
?
ret
x24
...
...
@@ -571,6 +581,9 @@ el0_irq_naked:
ct_user_exit
irq_handler
#ifdef CONFIG_IPIPE
bne
__ipipe_ret_to_user_irqs_disabled
#endif /* CONFIG_IPIPE */
#ifdef CONFIG_TRACE_IRQFLAGS
bl
trace_hardirqs_on
#endif
...
...
@@ -619,6 +632,15 @@ ret_fast_syscall:
enable_step_tsk
x1
,
x2
kernel_exit
0
,
ret
=
1
#ifdef CONFIG_IPIPE
__ipipe_ret_to_user
:
disable_irq
//
disable
interrupts
ENTRY
(
__ipipe_ret_to_user_irqs_disabled
)
kernel_exit
0
,
ret
=
0
ENDPROC
(
__ipipe_ret_to_user_irqs_disabled
)
#endif /* CONFIG_IPIPE */
/*
*
Ok
,
we
need
to
do
extra
processing
,
enter
the
slow
path
.
*/
...
...
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