Difference between revisions of "Hardware Abstraction Layer"

From ReactOS Wiki
Jump to: navigation, search
m
m
Line 47: Line 47:
 
* Used the time stamp counter from a pentium if it is available  (in KeStallExecutionProcessor/KeQueryPerformanceCounter). ([[Hartmut Birr]])
 
* Used the time stamp counter from a pentium if it is available  (in KeStallExecutionProcessor/KeQueryPerformanceCounter). ([[Hartmut Birr]])
 
* Improved smp functions. Changed/rewrote parts of the mp code to get my ASUS p2b-ds motherboard to working. Fixed the enabling/disabling of the higher irqs in Enable8259AIrq/Disable8259AIrq. Moved the local apic functions into its own file. Implemented the IpiInterrupt. Changed the destination of the startup ipis. Enabled interrupts on calls to KiDispatchInterrupt and KiDeliverApc. Delivered dpcs always on HalEndSystemInterrupt. Set the logical apic id according to the processor number from ntoskrnl. Dipped the code between HalInitializeProcessor and HalStartNextProcessor. ([[Hartmut Birr]])
 
* Improved smp functions. Changed/rewrote parts of the mp code to get my ASUS p2b-ds motherboard to working. Fixed the enabling/disabling of the higher irqs in Enable8259AIrq/Disable8259AIrq. Moved the local apic functions into its own file. Implemented the IpiInterrupt. Changed the destination of the startup ipis. Enabled interrupts on calls to KiDispatchInterrupt and KiDeliverApc. Delivered dpcs always on HalEndSystemInterrupt. Set the logical apic id according to the processor number from ntoskrnl. Dipped the code between HalInitializeProcessor and HalStartNextProcessor. ([[Hartmut Birr]])
 +
 +
[[ChangeLog-0.2.8]]
 +
 +
*Complete reimplementation of HAL DMA routines:
 +
** Proper support for bus-master device adapters.
 +
** Real implementation of map registers.
 +
** Basic support for emulating scatter/gather DMA on devices that don't support it in hardware.
 +
** Support for transfers that aren't page aligned.
 +
** Proper detection and support of EISA DMA controllers.
 +
** Fixed prototype for HalFlushCommonBuffer.
 +
([[Filip Navara]])

Revision as of 01:13, 18 March 2012

Category:ReactOS_Executive

The HAL makes it possible for the x86 ReactOS kernel and HAL to run on different x86 motherboards. The HAL abstracts motherboard specific code from the kernel, so that different motherboards do not require changes in the kernel. Examples for different hardware designs are the standard PC, the Japanese NEC PC98 or x86 SGI workstations.

http://www.reactos.org/en/dev_whitepaper.html

http://en.wikipedia.org/wiki/Microsoft_Windows_library_files#Hal.dll

http://svn.reactos.org/svn/reactos/trunk/reactos/hal/?view=log

ChangeLog-0.0.16

  • HAL dispatch tables and other HAL improvements

The HAL was separated from Ntoskrnl.exe in ReactOS 0.0.19

ChangeLog-0.1.0

  • Added HalpGetIsaInterruptVector, HalpTranslatePciAddress,
  • Improved PCI support (Hartmut Birr)

ChangeLog-0.1.5

  • Improved DMA support in the HAL (Vizzini)

ChangeLog-0.2.1

  • KiAcquire/ReleaseSpinLock adaption (Gunnar Dalsnes)
  • Spinlock can also be acquired using KeAcquireSpinLockRaiseToSynch(), take this into account when checking the IRQL on release (Gé van Geldorp)

ChangeLog-0.2.2

  • Spinlock can also be acquired using KeAcquireSpinLockRaiseToSynch() (Ge van Geldorp)

ChangeLog-0.2.3

  • Initialize the serial port to reasonable state after the detection (required by Virtual PC) (Filip Navara)
  • Avoid collision with compiler generated label (Ge van Geldorp)

ChangeLog-0.2.4

  • Implementation of HalReadDmaCounter. (Filip Navara)
  • Let HalAllocateCommonBuffer allocated 64K aligned memory. (Filip Navara)
  • Change IoMapTransfer to support auto initialize and single transfer mode, 16-bit DMA and common buffers. (Filip Navara)
  • Stop DMA transfer in IoFlushAdapterBuffers. (Filip Navara)
  • Replaced all single pushf/popf inline assembler instructions with a macro which doesn't change the stack layout. (Hartmut Birr)

ChangeLog-0.2.5

  • Create a new HAL to support the Xbox (Gé van Geldorp)
  • Rewritten DMA routines. (Alex Ionescu)
  • Used the time stamp counter from a pentium if it is available (in KeStallExecutionProcessor/KeQueryPerformanceCounter). (Hartmut Birr)
  • Improved smp functions. Changed/rewrote parts of the mp code to get my ASUS p2b-ds motherboard to working. Fixed the enabling/disabling of the higher irqs in Enable8259AIrq/Disable8259AIrq. Moved the local apic functions into its own file. Implemented the IpiInterrupt. Changed the destination of the startup ipis. Enabled interrupts on calls to KiDispatchInterrupt and KiDeliverApc. Delivered dpcs always on HalEndSystemInterrupt. Set the logical apic id according to the processor number from ntoskrnl. Dipped the code between HalInitializeProcessor and HalStartNextProcessor. (Hartmut Birr)

ChangeLog-0.2.8

  • Complete reimplementation of HAL DMA routines:
    • Proper support for bus-master device adapters.
    • Real implementation of map registers.
    • Basic support for emulating scatter/gather DMA on devices that don't support it in hardware.
    • Support for transfers that aren't page aligned.
    • Proper detection and support of EISA DMA controllers.
    • Fixed prototype for HalFlushCommonBuffer.

(Filip Navara)