mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-21 03:55:04 +00:00
7ce8464b3a
* Enable the use of the FXSAVE and FXRSTOR instructions, see Intel SDM Vol. 3C, section 2.5. * The state of the x87 floating point unit (FPU) is loaded and saved on demand. * Make the cr0 control register accessible in the Cpu class. This is in preparation of the upcoming FPU management. * Access to the FPU is disabled by setting the Task Switch flag in the cr0 register. * Access to the FPU is enabled by clearing the Task Switch flag in the cr0 register. * Implement FPU initialization * Add is_fpu_enabled helper function * Add pointer to CPU lazy state to CPU class * Init FPU when finishing kernel initialization * Add function to retry FPU instruction: Similar to the ARM mechanism to retry undefined instructions, implement a function for retrying an FPU instruction. If a floating-point instruction causes an #NM exception due to the FPU being disabled, it can be retried after the correct FPU state is restored, saving the current state and enabling the FPU in the process. * Disable FPU when switching to different user context: This enables lazy save/restore of the FPU since trying to execute a floating point instruction when the FPU is disabled will cause a #NM exception. * Declare constant for #NM exception * Retry FPU instruction on #NM exception * Assure alignment of FXSAVE area: The FXSAVE area is 512-byte memory region that must be 16-byte aligned. As it turns out the alignment attribute is not honored in all cases so add a workaround to assure the alignment constraint is met by manually rounding the start of the FXSAVE area to the next 16-byte boundary if necessary. |
||
---|---|---|
.. | ||
32bit/base | ||
64bit/base | ||
arm | ||
arm_v5/cpu | ||
arm_v6/cpu | ||
arm_v7/cpu | ||
base | ||
cap_session | ||
cpu | ||
cpu_session | ||
dataspace | ||
drivers | ||
io_mem_session | ||
io_port_session | ||
irq_session | ||
log_session | ||
pager | ||
parent | ||
pd_session | ||
platform | ||
platform_exynos5 | ||
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.