arch: arm64: Introduce {inc,dec}_nest_counter macros
The same code is used in several place / files. Make a macro out of it. Signed-off-by: Carlo Caione <ccaione@baylibre.com>
This commit is contained in:
parent
2f3962534a
commit
06adb96c1a
3 changed files with 30 additions and 16 deletions
|
@ -36,10 +36,7 @@ SECTION_FUNC(TEXT, _isr_wrapper)
|
|||
z_arm64_enter_exc x0, x1, x2
|
||||
|
||||
/* ++(_kernel->nested) to be checked by arch_is_in_isr() */
|
||||
ldr x0, =_kernel
|
||||
ldr x1, [x0, #_kernel_offset_to_nested]
|
||||
add x1, x1, #1
|
||||
str x1, [x0, #_kernel_offset_to_nested]
|
||||
inc_nest_counter x0, x1
|
||||
|
||||
#ifdef CONFIG_TRACING
|
||||
bl sys_trace_isr_enter
|
||||
|
@ -80,10 +77,7 @@ SECTION_FUNC(TEXT, _isr_wrapper)
|
|||
#endif
|
||||
|
||||
/* --(_kernel->nested) */
|
||||
ldr x0, =_kernel
|
||||
ldr x1, [x0, #_kernel_offset_to_nested]
|
||||
sub x1, x1, #1
|
||||
str x1, [x0, #_kernel_offset_to_nested]
|
||||
dec_nest_counter x0, x1
|
||||
|
||||
cmp x1, #0
|
||||
bne exit
|
||||
|
|
|
@ -101,6 +101,32 @@
|
|||
eret
|
||||
.endm
|
||||
|
||||
/**
|
||||
* @brief Increment nested counter
|
||||
*
|
||||
* @return N/A
|
||||
*/
|
||||
|
||||
.macro inc_nest_counter xreg0, xreg1
|
||||
ldr \xreg0, =_kernel
|
||||
ldr \xreg1, [\xreg0, #_kernel_offset_to_nested]
|
||||
add \xreg1, \xreg1, #1
|
||||
str \xreg1, [\xreg0, #_kernel_offset_to_nested]
|
||||
.endm
|
||||
|
||||
/**
|
||||
* @brief Decrement nested counter
|
||||
*
|
||||
* @return N/A
|
||||
*/
|
||||
|
||||
.macro dec_nest_counter xreg0, xreg1
|
||||
ldr \xreg0, =_kernel
|
||||
ldr \xreg1, [\xreg0, #_kernel_offset_to_nested]
|
||||
sub \xreg1, \xreg1, #1
|
||||
str \xreg1, [\xreg0, #_kernel_offset_to_nested]
|
||||
.endm
|
||||
|
||||
#endif /* _ASMLANGUAGE */
|
||||
|
||||
#endif /* _MACRO_PRIV_INC_ */
|
||||
|
|
|
@ -103,18 +103,12 @@ SECTION_FUNC(TEXT, z_arm64_svc)
|
|||
b inv
|
||||
offload:
|
||||
/* ++(_kernel->nested) to be checked by arch_is_in_isr() */
|
||||
ldr x0, =_kernel
|
||||
ldr x1, [x0, #_kernel_offset_to_nested]
|
||||
add x1, x1, #1
|
||||
str x1, [x0, #_kernel_offset_to_nested]
|
||||
inc_nest_counter x0, x1
|
||||
|
||||
bl z_irq_do_offload
|
||||
|
||||
/* --(_kernel->nested) */
|
||||
ldr x0, =_kernel
|
||||
ldr x1, [x0, #_kernel_offset_to_nested]
|
||||
sub x1, x1, #1
|
||||
str x1, [x0, #_kernel_offset_to_nested]
|
||||
dec_nest_counter x0, x1
|
||||
b exit
|
||||
#endif
|
||||
b inv
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue