nuttx/libs/libc/machine/arm64
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
..
arch_elf.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
arch_mcount.c libc/machine/arm64: Move all source files out of gnu folder 2025-06-30 09:56:27 +08:00
arch_memchr.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_memcmp.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_memcpy.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_memmove.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_memset.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_setjmp.S arch/arm64: Save d8-d15 in setjmp() and make jmp_buf hold them. 2026-10-09 06:11:29 -03:00
arch_strchr.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_strchrnul.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_strcmp.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_strcpy.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_strlen.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_strncmp.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_strnlen.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
arch_strrchr.S libc/arm64: add cfi for optimized func 2025-12-18 22:05:12 +08:00
CMakeLists.txt arch:use ARCH_64BIT to mark arch is support 64bit 2025-12-18 22:05:12 +08:00
Kconfig
Make.defs arch:use ARCH_64BIT to mark arch is support 64bit 2025-12-18 22:05:12 +08:00