seL4/include/arch/arm/arch/64/mode/machine/hardware.h
Gerwin Klein 79da079239 Convert license tags to SPDX identifiers
This commit also converts our own copyright headers to directly use
SPDX, but leaves all other copyright header intact, only adding the
SPDX ident. As far as possible this commit also merges multiple
Data61 copyright statements/headers into one for consistency.
2020-03-09 13:21:49 +08:00

61 lines
1.5 KiB
C

/*
* Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
*
* SPDX-License-Identifier: GPL-2.0-only
*/
#ifndef __ARCH_MACHINE_HARDWARE_64_H
#define __ARCH_MACHINE_HARDWARE_64_H
#include <config.h>
#include <sel4/sel4_arch/constants.h>
#define PAGE_BITS seL4_PageBits
/* Control register fields */
#define CONTROL_M 0 /* MMU enable */
#define CONTROL_A 1 /* Alignment check enable */
#define CONTROL_C 2 /* Cacheability control, for data caching */
#define CONTROL_SA0 4 /* Stack Alignment Check Enable for EL0 */
#define CONTROL_SA 3 /* Stack Alignment Check for EL1 */
#define CONTROL_I 12 /* Instruction access Cacheability control */
#define CONTROL_E0E 24 /* Endianness of data accesses at EL0 */
#define CONTROL_EE 25 /* Endianness of data accesses at EL1 */
#ifndef __ASSEMBLER__
#include <arch/types.h>
enum vm_page_size {
ARMSmallPage,
ARMLargePage,
ARMHugePage
};
typedef word_t vm_page_size_t;
enum frameSizeConstants {
ARMSmallPageBits = seL4_PageBits,
ARMLargePageBits = seL4_LargePageBits,
ARMHugePageBits = seL4_HugePageBits
};
static inline word_t CONST pageBitsForSize(vm_page_size_t pagesize)
{
switch (pagesize) {
case ARMSmallPage:
return ARMSmallPageBits;
case ARMLargePage:
return ARMLargePageBits;
case ARMHugePage:
return ARMHugePageBits;
default:
fail("Invalid page size");
}
}
#endif /* __ASSEMBLER__ */
#endif /* __ARCH_MACHINE_HARDWARE_64_H */