#define _FIXADDR_TOP 0xfffff000
#define FIXADDR_TOP ((unsigned long)_FIXADDR_TOP)
#define _FIXADDR_SIZE (_end_of_permanent_fixed_addresses << PAGE_SHIFT)
#define FIXADDR_START (FIXADDR_TOP - _FIXADDR_SIZE)
The advantage of fixmap addresses is that at compilation time, the address acts like a constant whose physical address is assigned when the kernel is booted. Addresses of this kind can be de-referenced faster than when normal pointers are used. The kernel also ensures that the page table entries of fixmaps are not flushed from the TLB during a context switch so that access is always made via fast cache memory.
A constant is created for each fixmap address and must appear in the enum list called fixed_addresses.
Continue reading here: Includeasmx86fixmap32h
Was this article helpful?