nuttx/arch/arm64/include
Marco Casaroli f0669ebd59 arch/arm64: Save d8-d15 in setjmp() and make jmp_buf hold them.
arch_setjmp.S stores d8-d15 only under CONFIG_ARCH_FPU, but it did not
include nuttx/config.h.  So setjmp() never saved these registers and
longjmp() never restored them.  They are callee-saved (AAPCS64), so a
function that kept a value in one of them could see it change after a
longjmp().

Include nuttx/config.h.  The assembly then stores d8-d15, eight bytes
each, at offsets 112 to 176.  struct setjmp_buf_s declared them as
eight 4-byte floats, 32 bytes short, so declare them as uint64_t too.
jmp_buf is now 176 bytes with the FPU, and its layout matches the
assembly.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-10-09 06:11:29 -03:00
..
a64
a527
am62x arm64/am62x: Add TISCI client, GPIO and I2C drivers 2026-08-02 11:40:13 +08:00
bcm2711 bcm2711/oneshot: Implement oneshot timer driver for BCM2711 2026-07-12 09:52:26 +08:00
fvp-v8r
goldfish
imx8
imx9 imx9: imx95 fix uSDHC IRQ naming to match NuttX USDHC convention 2026-03-24 15:39:07 +08:00
qemu
rk3399
rk3588 arm64: add RK3588 support 2026-07-20 20:55:52 -03:00
zynq-mpsoc style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
.gitignore
arch.h arch/atomic: remove up_testset in spinlock 2026-09-08 08:58:54 +08:00
barriers.h barrier: add UP_RMB UP_WMB 2025-12-22 10:22:06 -03:00
elf.h
inttypes.h
irq.h arch/arm64: Build fork() children from the caller's syscall frame. 2026-08-10 08:57:30 -03:00
limits.h
setjmp.h arch/arm64: Save d8-d15 in setjmp() and make jmp_buf hold them. 2026-10-09 06:11:29 -03:00
stdarg.h
syscall.h
types.h