Hardware Abstraction Layer (HAL)
Isolates the kernel from hardware variations.
Exports an API to upper layers to handle hardware dependent issues such as:
- processor initialization (support for SMP computers).
- instruction cache and data cache.
- device driver support (e.g., bus addressing, interrupt control, DMA functions)
- timing and interrupt functions
- firmware interface functions
- low level error handling.