I'm afraid you've got it the wrong way round - the HAL is the hardware dependent bit. It means that the parts above it can be more hardware independent. When you move to a new chip, you write a new HAL to deal with the specific hardware on that chip, but the core OS stays the same. Also, the HAL only covers a fairly low-level set of functions, there are other higher level modules (e.g. network drivers, video drivers) that are also dependent on specific hardware.