nuttx/arch/arm/src/armv7-a
anjiahao 84a3639774 arm-m armv7a riscv32 :use cfi in irq asm function, make a debug frame
test code hello_main

int main(int argc, FAR char *argv[])
{
  uint32_t *p = 0xdeedbeff;
  *p = 0xffffff;

  printf("%p\n %x\n", p, *p);
  return 0;
}

qemu mps3-an547 hello_main :
Triggering an exception, and gdb backtrace is:

before:
(gdb) bt
/#0  0x0001168a in systick_getstatus (lower_=0x100010c <g_systick_lower>, status=0x1000a30 <g_intstackalloc+1600>)
    at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_systick.c:142
/#1  0x000122f4 in current_usec () at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_timer.c:105
/#2  0x0001234c in udelay_accurate (microseconds=250000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_timer.c:115
/#3  0x000124bc in up_udelay (microseconds=250000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_timer.c:463
/#4  0x0001249e in up_mdelay (milliseconds=250) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_timer.c:446
/#5  0x0000920c in reset_board () at /home/ajh/work/vela_system/nuttx/sched/misc/assert.c:830
/#6  0x0000937c in _assert (filename=0x393f8 "/arch/arm/src/armv8-m/arm_busfault.c", linenum=113, msg=0x393f0 "panic", regs=0x1008500)
    at /home/ajh/work/vela_system/nuttx/sched/misc/assert.c:940
/#7  0x00000e2c in arm_busfault (irq=3, context=0x1008500, arg=0x0 <up_ndelay>) at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_busfault.c:113
/#8  0x000012d2 in arm_hardfault (irq=3, context=0x1008500, arg=0x0 <up_ndelay>)
    at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_hardfault.c:142
/#9  0x00008b20 in irq_dispatch (irq=3, context=0x1008500) at /home/ajh/work/vela_system/nuttx/sched/irq/irq_dispatch.c:145
/#10 0x0000041a in arm_doirq (irq=3, regs=0x1008500) at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_doirq.c:103
/#11 0x0000034e in exception_common () at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_exception.S:224

after:
(gdb) bt
/#0  systick_is_running () at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_systick.c:106
/#1  0x000125c0 in systick_getstatus (lower_=0x1000114 <g_systick_lower>, status=0x1007a20)
    at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_systick.c:141
/#2  0x0001323c in current_usec () at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_timer.c:105
/#3  0x00013294 in udelay_accurate (microseconds=250000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_timer.c:115
/#4  0x00013404 in up_udelay (microseconds=250000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_timer.c:463
/#5  0x000133e6 in up_mdelay (milliseconds=250) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_timer.c:446
/#6  0x00008c5c in reset_board () at /home/ajh/work/vela_system/nuttx/sched/misc/assert.c:816
/#7  0x00008e88 in _assert (filename=0x39408 "/arch/arm/src/armv8-m/arm_busfault.c", linenum=113, msg=0x39400 "panic", regs=0x1007cf0)
    at /home/ajh/work/vela_system/nuttx/sched/misc/assert.c:915
/#8  0x00000ce4 in arm_busfault (irq=3, context=0x1007cf0, arg=0x0 <up_ndelay>)
    at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_busfault.c:113
/#9  0x0000118a in arm_hardfault (irq=3, context=0x1007cf0, arg=0x0 <up_ndelay>)
    at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_hardfault.c:142
/#10 0x000086cc in irq_dispatch (irq=3, context=0x1007cf0) at /home/ajh/work/vela_system/nuttx/sched/irq/irq_dispatch.c:145
/#11 0x0000041e in arm_doirq (irq=3, regs=0x1007cf0) at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_doirq.c:99
/#12 0x00000360 in exception_common () at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv8-m/arm_exception.S:230
/#13 0x00027a8c in hello_main (argc=1, argv=0x1006e20) at /home/ajh/work/vela_system/apps/examples/hello/hello_main.c:39
/#14 0x00014968 in nxtask_startup (entrypt=0x27a7d <hello_main>, argc=1, argv=0x1006e20)
    at /home/ajh/work/vela_system/nuttx/libs/libc/sched/task_startup.c:72
/#15 0x0000f450 in nxtask_start () at /home/ajh/work/vela_system/nuttx/sched/task/task_start.c:116
/#16 0x00000000 in ?? ()
(gdb)

qemu armv7a nsh, hello_main:

before:
(gdb) bt
/#0  udelay_coarse (microseconds=156000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_alarm.c:67
/#1  up_ndelay (nanoseconds=nanoseconds@entry=250000000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_alarm.c:431
/#2  0x0060c630 in up_udelay (microseconds=microseconds@entry=250000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_alarm.c:416
/#3  0x0060c644 in up_mdelay (milliseconds=milliseconds@entry=250) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_alarm.c:401
/#4  0x006056bc in reset_board () at /home/ajh/work/vela_system/nuttx/sched/misc/assert.c:816
/#5  _assert (filename=filename@entry=0x63047f "/arch/arm/src/armv7-a/arm_dataabort.c", linenum=linenum@entry=157, msg=msg@entry=0x62f56d "panic",
    regs=<optimized out>, regs@entry=0x4020af10) at /home/ajh/work/vela_system/nuttx/sched/misc/assert.c:915
/#6  0x0060bd74 in arm_dataabort (regs=0x4020af10, dfar=<optimized out>, dfsr=<optimized out>)
    at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv7-a/arm_dataabort.c:157
/#7  0x0060bc04 in arm_vectordata () at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv7-a/arm_vectors.S:438
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

after:
(gdb) bt
/#0  udelay_coarse (microseconds=192000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_alarm.c:67
/#1  up_ndelay (nanoseconds=nanoseconds@entry=250000000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_alarm.c:431
/#2  0x0060c650 in up_udelay (microseconds=microseconds@entry=250000) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_alarm.c:416
/#3  0x0060c664 in up_mdelay (milliseconds=milliseconds@entry=250) at /home/ajh/work/vela_system/nuttx/drivers/timers/arch_alarm.c:401
/#4  0x006056bc in reset_board () at /home/ajh/work/vela_system/nuttx/sched/misc/assert.c:816
/#5  _assert (filename=filename@entry=0x63047f "/arch/arm/src/armv7-a/arm_dataabort.c", linenum=linenum@entry=157, msg=msg@entry=0x62f56d "panic",
    regs=<optimized out>, regs@entry=0x4020af10) at /home/ajh/work/vela_system/nuttx/sched/misc/assert.c:915
/#6  0x0060bd94 in arm_dataabort (regs=0x4020af10, dfar=<optimized out>, dfsr=<optimized out>)
    at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv7-a/arm_dataabort.c:157
/#7  0x0060bc08 in arm_vectordata () at /home/ajh/work/vela_system/nuttx/arch/arm/src/armv7-a/arm_vectors.S:453
/#8  0x00620cd4 in hello_main (argc=4999, argv=0x0) at /home/ajh/work/vela_system/apps/examples/hello/hello_main.c:41
/#9  0x0060d320 in nxtask_startup (entrypt=0x620cc4 <hello_main>, argc=1, argv=0x4020a088)
    at /home/ajh/work/vela_system/nuttx/libs/libc/sched/task_startup.c:72
/#10 0x00609b50 in nxtask_start () at /home/ajh/work/vela_system/nuttx/sched/task/task_start.c:116
/#11 0x00000000 in ?? ()

qemu risc-v nsh

before:

(gdb) bt
/#0  udelay_coarse (microseconds=228000, microseconds@entry=891896832) at timers/arch_alarm.c:67
/#1  up_ndelay (nanoseconds=nanoseconds@entry=250000000) at timers/arch_alarm.c:431
/#2  0x8000397e in up_udelay (microseconds=microseconds@entry=250000) at timers/arch_alarm.c:416
/#3  0x80003988 in up_mdelay (milliseconds=milliseconds@entry=250) at timers/arch_alarm.c:401
/#4  0x80011f1c in reset_board () at misc/assert.c:813
/#5  0x80011f7a in _assert (filename=filename@entry=0x0, linenum=linenum@entry=0, msg=msg@entry=0x8002114c "panic", regs=<optimized out>,
    regs@entry=0x80030704) at misc/assert.c:915
/#6  0x80006ad6 in riscv_exception (mcause=<optimized out>, regs=0x80030704, args=<optimized out>) at common/riscv_exception.c:129
/#7  0x80000d9e in riscv_doirq (irq=7, regs=<optimized out>) at common/riscv_doirq.c:99
/#8  0x80000164 in exception_common () at common/riscv_exception_common.S:210
Backtrace stopped: frame did not save the PC
(gdb)

after

(gdb) bt
/#0  0x80003922 in udelay_coarse (microseconds=90000, microseconds@entry=891896832) at timers/arch_alarm.c:67
/#1  up_ndelay (nanoseconds=nanoseconds@entry=250000000) at timers/arch_alarm.c:431
/#2  0x8000397e in up_udelay (microseconds=microseconds@entry=250000) at timers/arch_alarm.c:416
/#3  0x80003988 in up_mdelay (milliseconds=milliseconds@entry=250) at timers/arch_alarm.c:401
/#4  0x80011f2a in reset_board () at misc/assert.c:816
/#5  0x80011f7a in _assert (filename=filename@entry=0x0, linenum=linenum@entry=0, msg=msg@entry=0x8002114c "panic", regs=<optimized out>,
    regs@entry=0x80030704) at misc/assert.c:915
/#6  0x80006ad6 in riscv_exception (mcause=<optimized out>, regs=0x80030704, args=<optimized out>) at common/riscv_exception.c:129
/#7  0x80000d9e in riscv_doirq (irq=7, regs=<optimized out>) at common/riscv_doirq.c:99
/#8  0x80000166 in exception_common () at common/riscv_exception_common.S:215
/#9  0x8001792a in hello_main (argc=<optimized out>, argv=<optimized out>) at hello_main.c:41
/#10 0x80004b52 in nxtask_startup (entrypt=0x80030704, argc=1, argv=0x800300e8) at sched/task_startup.c:72
/#11 0x80001e72 in nxtask_start () at task/task_start.c:116
/#12 0x00000000 in ?? ()
Backtrace stopped: frame did not save the PC
(gdb)

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
2024-12-17 16:43:42 +08:00
..
addrenv.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_addrenv.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_addrenv_kstack.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_addrenv_perms.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_addrenv_pgmap.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_addrenv_shm.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_addrenv_ustack.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_addrenv_utils.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_allocpage.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_cache.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_checkmapping.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_cpu_psci.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_cpu_psci.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_cpuhead.S arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_cpuidlestack.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_cpuinfo.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_cpustart.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_dataabort.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_dofiq.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_doirq.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_fpucmp.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_fpuconfig.S arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_gicv2.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_gicv2_dump.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_gicv2m.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_head.S arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_initialstate.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_l2cc_pl310.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_mmu.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_perf.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_pgalloc.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_pghead.S arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_pginitialize.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_physpgaddr.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_prefetchabort.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_saveusercontext.S arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_schedulesigaction.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_scu.c armv7-a/armv7-r/armv8-r: percpu reg store this_task 2024-12-06 09:27:33 +08:00
arm_sigdeliver.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_smccc.S arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_smpcall.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_syscall.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_tcbinfo.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_timer.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_timer.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_undefinedinsn.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_va2pte.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_vectors.S arm-m armv7a riscv32 :use cfi in irq asm function, make a debug frame 2024-12-17 16:43:42 +08:00
arm_vectortab.S arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
arm_virtpgaddr.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
barriers.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
CMakeLists.txt arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
cp15_cacheops.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
cp15_cacheops.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
crt0.c arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
gic.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
gtm.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
Kconfig arm_gicv2_dump: optimize gic dump 2024-10-11 19:56:41 +08:00
l2cc.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
l2cc_pl310.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
Make.defs arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
mmu.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
mpcore.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
pgalloc.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
sctlr.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
scu.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
smp.h arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00
Toolchain.defs arch/arm: migrate to SPDX identifier 2024-12-06 09:25:23 +08:00