genode/repos/base-hw/src/core/include/spec/x86
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
..
kernel hw: skeleton for building on x86_64 2015-03-27 11:53:16 +01:00
board.h hw_x86_64: Add x86-specific board.h file 2015-03-27 11:53:30 +01:00
cpu.h hw_x86_64: Enable FPU support 2015-03-27 11:53:31 +01:00
macros.s hw: skeleton for building on x86_64 2015-03-27 11:53:16 +01:00
macros_support.s hw: skeleton for building on x86_64 2015-03-27 11:53:16 +01:00
pic.h hw_x86_64: Implement APIC-based PIC driver 2015-03-27 11:53:31 +01:00
port_io.h hw_x86_64: Provide inb and outb functions for port I/O 2015-03-27 11:53:30 +01:00
serial.h hw: skeleton for building on x86_64 2015-03-27 11:53:16 +01:00
timer.h hw_x86_64: Implement LAPIC-based kernel timer 2015-03-27 11:53:31 +01:00