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:
Carlo Caione 2020-09-07 09:52:29 +02:00 committed by Anas Nashif
commit 06adb96c1a
3 changed files with 30 additions and 16 deletions

View file

@ -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

View file

@ -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_ */

View file

@ -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