mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-25 16:31:06 +00:00
4b420f6e71
The x86_64 ABI requires the stack pointer to be 16-byte aligned before the call of a function and decreased by 8 at the function entrypoint (after the return address has been pushed to the stack). Currently, when a new Genode thread gets created, the initial stack pointer is aligned to 16 byte. On Genode/Linux, the thread entry function is entered by a 'call' instruction, so the stack pointer alignment at the function entrypoint is correct. On Fiasco.OC and NOVA, however, the thread entry function gets executed without a return address being pushed to the stack, so at the function entrypoint the stack pointer is still aligned to 16 byte, which can cause problems with compiler-generated SSE instructions. With this patch, the stack pointer given to a new thread gets aligned to 16 bytes and decreased by 8 by default, since most of the currently supported base platforms execute the thread entry function without pushing a return address to the stack. For base-linux, the stack pointer gets realigned to 16 bytes before the thread entry function gets called. Fixes #1043. |
||
---|---|---|
.. | ||
32bit/base | ||
64bit/base | ||
arm | ||
base | ||
cap_session | ||
cpu_session | ||
dataspace | ||
drivers | ||
io_mem_session | ||
io_port_session | ||
irq_session | ||
log_session | ||
pager | ||
parent | ||
pd_session | ||
platform | ||
ram_session | ||
rm_session | ||
rom_session | ||
root | ||
session | ||
signal_session | ||
thread | ||
trace_session | ||
util | ||
x86/cpu | ||
x86_32/cpu | ||
x86_64/cpu | ||
README |
This directory contains include files of interfaces that are exported by components to be used by other components. Each subdirectory corresponds to the component exporting the interface.