mmustructs: don't use addr to name structures

This breaks too easily, for example if &some_linker_variable
is used. The names don't matter at all, use preprocessor
__COUNTER__.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
Andrew Boie 2017-07-05 15:13:57 -07:00 committed by Andrew Boie
commit c9814f5104

View file

@ -129,10 +129,13 @@ struct mmu_region {
* region_size has to be provided in bytes
* for read write access = MMU_ENTRY_READ/MMU_ENTRY_WRITE
* for supervisor/user mode access = MMU_ENTRY_SUPERVISOR/MMU_ENTRY_USER
*
* Preprocessor indirection layers used to ensure __COUNTER__ is expanded
* properly.
*/
#define MMU_BOOT_REGION(addr, region_size, permission_flags) \
static struct mmu_region region_##addr \
#define __MMU_BOOT_REGION(id, addr, region_size, permission_flags) \
static struct mmu_region region_##id \
__attribute__((__section__(".mmulist"), used)) = \
{ \
.address = addr, \
@ -140,6 +143,12 @@ struct mmu_region {
.flags = permission_flags, \
}
#define _MMU_BOOT_REGION(id, addr, region_size, permission_flags) \
__MMU_BOOT_REGION(id, addr, region_size, permission_flags)
#define MMU_BOOT_REGION(addr, region_size, permission_flags) \
_MMU_BOOT_REGION(__COUNTER__, addr, region_size, permission_flags)
/*
* The following defines the format of a 32-bit page directory entry
* that references a page table (as opposed to a 4 Mb page).