I kept getting a general protection fault whenever attempting to execute the amd64 BSP while preparing for my GSOC proposal.
The GPF was being caused by an instruction attempting to move an SSE register to an address on the stack not aligned to 16 bytes. After some debugging I noticed that the code for setting up the stack frame for a context would result in it being misaligned by 8 bytes as to what is expected by the x86-64 SysV ABI, thus leading the compiler to unknowingly cause the exception (when control is transferred to the function entry point RSP+8 is supposed to be a multiple of 16, without this patch RSP itself was a multiple of 16). After the fix I was able to run the hello test on the amd64 BSP both while booting through the FreeBSD bootloader with no EFI boot services as well as through GRUB with multiboot2 and EFI boot services. Matheus Pecoraro (1): x86_64: Fix stack aligment for x86-64 SysV ABI bsps/x86_64/amd64/clock/eficlock.c | 28 ++----------------- bsps/x86_64/amd64/start/start.S | 1 - .../cpu/x86_64/x86_64-context-initialize.c | 4 +-- 3 files changed, 5 insertions(+), 28 deletions(-) -- 2.43.0 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel