genode/repos/base-hw/src/core/include/spec
Adrian-Ken Rueegsegger 7ce8464b3a hw_x86_64: Enable FPU support
* 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.
2015-03-27 11:53:31 +01:00
..
arm hw: adjust core bootstrap to fit generic process 2015-03-19 08:57:19 +01:00
arm_gic hw_arndale: setup ARM hypervisor mode 2015-02-27 11:48:05 +01:00
arm_v6 hw: adjust core bootstrap to fit generic process 2015-03-19 08:57:19 +01:00
arm_v7 hw: adjust core bootstrap to fit generic process 2015-03-19 08:57:19 +01:00
cortex_a8 hw: adjust core bootstrap to fit generic process 2015-03-19 08:57:19 +01:00
cortex_a9 hw: refactor irq controllers 2015-02-27 11:43:56 +01:00
cortex_a15 hw_arndale: enable ARM virtualization extensions 2015-02-27 11:48:05 +01:00
exynos5 hw_arndale: setup ARM hypervisor mode 2015-02-27 11:48:05 +01:00
imx imx31: remove platform completely (fix #1360) 2015-01-12 14:24:15 +01:00
imx53 hw: extend kernel interrupt class 2015-02-27 11:43:56 +01:00
panda hw: refactor irq controllers 2015-02-27 11:43:56 +01:00
pbxa9 hw: refactor irq controllers 2015-02-27 11:43:56 +01:00
pl011 hw: re-organize file structure 2014-08-15 10:19:48 +02:00
rpi hw: extend kernel interrupt class 2015-02-27 11:43:56 +01:00
tl16c750 hw: re-organize file structure 2014-08-15 10:19:48 +02:00
vea9x4 hw: refactor irq controllers 2015-02-27 11:43:56 +01:00
x86 hw_x86_64: Enable FPU support 2015-03-27 11:53:31 +01:00
x86_64 hw_x86_64: Add virt_base paramater to Tss::setup function 2015-03-27 11:53:27 +01:00