arch: arm64: Enable tracing
Enable the tracing hooks on the ARM64 platform and white-list the tracing tests. Signed-off-by: Carlo Caione <ccaione@baylibre.com>
This commit is contained in:
parent
528319bff7
commit
0d5e011be4
5 changed files with 33 additions and 2 deletions
|
@ -15,6 +15,11 @@
|
||||||
|
|
||||||
GTEXT(arch_cpu_idle)
|
GTEXT(arch_cpu_idle)
|
||||||
SECTION_FUNC(TEXT, arch_cpu_idle)
|
SECTION_FUNC(TEXT, arch_cpu_idle)
|
||||||
|
#ifdef CONFIG_TRACING
|
||||||
|
stp xzr, x30, [sp, #-16]!
|
||||||
|
bl sys_trace_idle
|
||||||
|
ldp xzr, x30, [sp], #16
|
||||||
|
#endif
|
||||||
dsb sy
|
dsb sy
|
||||||
wfi
|
wfi
|
||||||
msr daifclr, #(DAIFSET_IRQ)
|
msr daifclr, #(DAIFSET_IRQ)
|
||||||
|
@ -22,6 +27,11 @@ SECTION_FUNC(TEXT, arch_cpu_idle)
|
||||||
|
|
||||||
GTEXT(arch_cpu_atomic_idle)
|
GTEXT(arch_cpu_atomic_idle)
|
||||||
SECTION_FUNC(TEXT, arch_cpu_atomic_idle)
|
SECTION_FUNC(TEXT, arch_cpu_atomic_idle)
|
||||||
|
#ifdef CONFIG_TRACING
|
||||||
|
stp xzr, x30, [sp, #-16]!
|
||||||
|
bl sys_trace_idle
|
||||||
|
ldp xzr, x30, [sp], #16
|
||||||
|
#endif
|
||||||
msr daifset, #(DAIFSET_IRQ)
|
msr daifset, #(DAIFSET_IRQ)
|
||||||
isb
|
isb
|
||||||
wfe
|
wfe
|
||||||
|
|
|
@ -58,11 +58,19 @@ SECTION_FUNC(TEXT, _isr_wrapper)
|
||||||
add x2, x2, #1
|
add x2, x2, #1
|
||||||
str x2, [x1, #_kernel_offset_to_nested]
|
str x2, [x1, #_kernel_offset_to_nested]
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRACING
|
||||||
|
bl sys_trace_isr_enter
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Cortex-A has one IRQ line so the main handler will be at offset 0 */
|
/* Cortex-A has one IRQ line so the main handler will be at offset 0 */
|
||||||
ldr x1, =_sw_isr_table
|
ldr x1, =_sw_isr_table
|
||||||
ldp x0, x3, [x1] /* arg in x0, ISR in x3 */
|
ldp x0, x3, [x1] /* arg in x0, ISR in x3 */
|
||||||
blr x3
|
blr x3
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRACING
|
||||||
|
bl sys_trace_isr_exit
|
||||||
|
#endif
|
||||||
|
|
||||||
/* --(_kernel->nested) */
|
/* --(_kernel->nested) */
|
||||||
ldr x1, =_kernel
|
ldr x1, =_kernel
|
||||||
ldr x2, [x1, #_kernel_offset_to_nested]
|
ldr x2, [x1, #_kernel_offset_to_nested]
|
||||||
|
|
|
@ -39,6 +39,11 @@ GDATA(_k_neg_eagain)
|
||||||
*/
|
*/
|
||||||
GTEXT(z_arm64_pendsv)
|
GTEXT(z_arm64_pendsv)
|
||||||
SECTION_FUNC(TEXT, z_arm64_pendsv)
|
SECTION_FUNC(TEXT, z_arm64_pendsv)
|
||||||
|
#ifdef CONFIG_TRACING
|
||||||
|
stp xzr, x30, [sp, #-16]!
|
||||||
|
bl sys_trace_thread_switched_in
|
||||||
|
ldp xzr, x30, [sp], #16
|
||||||
|
#endif
|
||||||
/* load _kernel into x1 and current k_thread into x2 */
|
/* load _kernel into x1 and current k_thread into x2 */
|
||||||
ldr x1, =_kernel
|
ldr x1, =_kernel
|
||||||
ldr x2, [x1, #_kernel_offset_to_current]
|
ldr x2, [x1, #_kernel_offset_to_current]
|
||||||
|
@ -112,6 +117,12 @@ SECTION_FUNC(TEXT, z_arm64_pendsv)
|
||||||
ldr x6, [x0]
|
ldr x6, [x0]
|
||||||
mov sp, x6
|
mov sp, x6
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRACING
|
||||||
|
stp xzr, x30, [sp, #-16]!
|
||||||
|
bl sys_trace_thread_switched_out
|
||||||
|
ldp xzr, x30, [sp], #16
|
||||||
|
#endif
|
||||||
|
|
||||||
/* We restored x30 from the process stack. There are three possible
|
/* We restored x30 from the process stack. There are three possible
|
||||||
* cases:
|
* cases:
|
||||||
*
|
*
|
||||||
|
|
|
@ -17,4 +17,3 @@ testing:
|
||||||
- net
|
- net
|
||||||
- nfc
|
- nfc
|
||||||
- shell
|
- shell
|
||||||
- tracing
|
|
||||||
|
|
|
@ -44,7 +44,10 @@ size_t _kernel_openocd_offsets[] = {
|
||||||
[OPENOCD_OFFSET_T_USER_OPTIONS] = offsetof(struct _thread_base,
|
[OPENOCD_OFFSET_T_USER_OPTIONS] = offsetof(struct _thread_base,
|
||||||
user_options),
|
user_options),
|
||||||
[OPENOCD_OFFSET_T_PRIO] = offsetof(struct _thread_base, prio),
|
[OPENOCD_OFFSET_T_PRIO] = offsetof(struct _thread_base, prio),
|
||||||
#if defined(CONFIG_ARM)
|
#if defined(CONFIG_ARM64)
|
||||||
|
[OPENOCD_OFFSET_T_STACK_PTR] = offsetof(struct k_thread,
|
||||||
|
callee_saved.sp),
|
||||||
|
#elif defined(CONFIG_ARM)
|
||||||
[OPENOCD_OFFSET_T_STACK_PTR] = offsetof(struct k_thread,
|
[OPENOCD_OFFSET_T_STACK_PTR] = offsetof(struct k_thread,
|
||||||
callee_saved.psp),
|
callee_saved.psp),
|
||||||
#elif defined(CONFIG_ARC)
|
#elif defined(CONFIG_ARC)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue