|
FreeNOS
|
ARM64 System Control Coprocessor (CP15). More...
Enumerations | |
| enum | Register { MainID = 0 , CoreID , SystemControl , AuxControl , DomainControl , TranslationTable0 , TranslationTable1 , TranslationTableCtrl , CacheClear , DataCacheClean , FlushPrefetchBuffer , InstructionCacheClear , InstructionTLBClear , DataTLBClear , UnifiedTLBClear , UserProcID , InstructionFaultAddress , InstructionFaultStatus , DataFaultAddress , DataFaultStatus , SystemFrequency , PhysicalTimerValue , PhysicalTimerControl , PhysicalTimerCount , MemoryModelFeature , MemoryAttrIndirection , VectorBaseAddress , DAIF } |
| System Control Registers. More... | |
| enum | AuxControlFlags { DisablePageColoring = (1 << 6) , SMPBit = (1 << 6) } |
| Aux Control flags. More... | |
| enum | DomainControlFlags { DomainClient = 1 , DomainManager = 3 } |
| Domain Control flags. More... | |
Functions | |
| u64 | read (Register reg) |
| Read a register from the CP15. | |
| void | write (Register reg, u64 value) |
| Write register to the CP15. | |
| void | set (Register reg, u64 flags) |
| void | unset (Register reg, u64 flags) |
| void | set (AuxControlFlags flags) |
| Set auxillary flags in CP15. | |
| void | set (DomainControlFlags flags) |
| Set domain control flags in CP15. | |
Variables | |
| enum ARM64Control::Register | ALIGN |
ARM64 System Control Coprocessor (CP15).
The ARM64 Architecture defines a coprocessor to manage various subsystems in the ARM64 core, including virtual memory, interrupts, debugging and more. It appears as coprocessor number 15 to the ARM64 core and is accessible by the MRC (ARM64 Register from Coprocessor) and MCR () instructions.
Aux Control flags.
| Enumerator | |
|---|---|
| DisablePageColoring | |
| SMPBit | |
Definition at line 90 of file ARM64Control.h.
Domain Control flags.
| Enumerator | |
|---|---|
| DomainClient | |
| DomainManager | |
Definition at line 99 of file ARM64Control.h.
System Control Registers.
Definition at line 53 of file ARM64Control.h.
Read a register from the CP15.
| reg | The Register to read. |
Definition at line 24 of file ARM64Control.cpp.
References DAIF, MemoryModelFeature, PhysicalTimerControl, PhysicalTimerCount, PhysicalTimerValue, SystemControl, and SystemFrequency.
Referenced by ARM64Paging::enableMMU(), ARM64Timer::getSystemFrequency(), set(), and unset().
| void ARM64Control::set | ( | AuxControlFlags | flags | ) |
Set auxillary flags in CP15.
| flags | Auxillary flags to set |
Definition at line 116 of file ARM64Control.cpp.
References AuxControl, flags, and set().
| void ARM64Control::set | ( | DomainControlFlags | flags | ) |
Set domain control flags in CP15.
| flags | New domain control flags |
Definition at line 121 of file ARM64Control.cpp.
References DomainControl, flags, and set().
Definition at line 109 of file ARM64Control.cpp.
Write register to the CP15.
| reg | The Register to write. |
| value | 32-value to write. |
Definition at line 62 of file ARM64Control.cpp.
References MemoryAttrIndirection, PhysicalTimerControl, PhysicalTimerValue, SystemControl, TranslationTable0, TranslationTable1, TranslationTableCtrl, and VectorBaseAddress.
Referenced by ARM64Paging::activate(), ARM64Exception::ARM64Exception(), ARM64Paging::enableMMU(), set(), ARM64Timer::setPL1PhysicalTimerControl(), ARM64Timer::setPL1PhysicalTimerValue(), and unset().
| enum ARM64Control::Register ARM64Control::ALIGN |