FreeNOS
Data Structures | Macros | Functions | Variables
ARMCore.h File Reference
#include <FreeNOS/Constant.h>
#include <Types.h>
#include <Macros.h>
#include "ARMControl.h"

Go to the source code of this file.

Data Structures

struct  CPUState
 Contains all the CPU registers. More...
 
class  ARMCore
 Class representing an ARM processor core. More...
 

Macros

#define IRQ(vector)   (vector)
 Remap interrupt vector (unused for ARM) More...
 
#define mrc(coproc, opcode1, opcode2, reg, subReg)
 Move to ARM from CoProcessor (MRC). More...
 
#define mcr(coproc, opcode1, opcode2, reg, subReg, value)
 Move to CoProcessor from ARM (MCR). More...
 
#define mrrc(coproc, opcode1, CRm)
 64-bit move to ARM from CoProcessor (MRC). More...
 
#define mcrr(coproc, opcode1, CRm, value)
 64-bit move to CoProcessor from ARM (MCR). More...
 
#define timestamp()   0
 Reads the CPU's timestamp counter. More...
 
#define cpu_reboot()
 Reboot the system. More...
 
#define cpu_shutdown()
 Shutdown the machine via ACPI. More...
 
#define idle()   asm volatile ("wfi")
 Puts the CPU in a lower power consuming state. More...
 
#define vbar_set(addr)   mcr(p15, 0, 0, c12, c0, (addr))
 Change Vector Base Address (VBAR) More...
 
#define sysctrl_read()   (mrc(p15, 0, 0, c1, c0))
 Read System Control register. More...
 
#define sysctrl_write(val)   mcr(p15, 0, 0, c1, c0, (val))
 Write System Control register. More...
 
#define read_core_id()   (mrc(p15, 0, 5, c0, c0) & 0xff)
 Read unique core identifier. More...
 
#define tlb_invalidate(page)
 

Functions

void tlb_flush_all ()
 Flush the entire Translation Lookaside Buffer. More...
 
void dmb ()
 Data Memory Barrier. More...
 
void dsb ()
 Data Synchronisation Barrier. More...
 
void flushBranchPrediction ()
 Flush branch prediction. More...
 
void isb ()
 Instruction Synchronisation Barrier (ARMv7 and above) More...
 
void flushPrefetchBuffer ()
 Flush Prefetch Buffer. More...
 
struct CPUState ALIGN (4) CPUState
 Contains all the CPU registers. More...
 

Variables

u32 padding [4]
 
u32 cpsr
 
u32 sp
 
u32 lr
 
u32 r0
 
u32 r1
 
u32 r2
 
u32 r3
 
u32 r4
 
u32 r5
 
u32 r6
 
u32 r7
 
u32 r8
 
u32 r9
 
u32 r10
 
u32 r11
 
u32 r12
 
u32 pc
 
class ARMCore ALIGN
 

Variable Documentation

◆ cpsr

u32 cpsr

Definition at line 232 of file ARMCore.h.

◆ lr

u32 lr

Definition at line 233 of file ARMCore.h.

◆ padding

u32 padding[4]

Definition at line 231 of file ARMCore.h.

◆ pc

u32 pc

Definition at line 235 of file ARMCore.h.

◆ r0

u32 r0

Definition at line 234 of file ARMCore.h.

◆ r1

u32 r1

Definition at line 234 of file ARMCore.h.

◆ r10

u32 r10

Definition at line 234 of file ARMCore.h.

◆ r11

u32 r11

Definition at line 234 of file ARMCore.h.

◆ r12

u32 r12

Definition at line 234 of file ARMCore.h.

◆ r2

u32 r2

Definition at line 234 of file ARMCore.h.

◆ r3

u32 r3

Definition at line 234 of file ARMCore.h.

◆ r4

u32 r4

Definition at line 234 of file ARMCore.h.

◆ r5

u32 r5

Definition at line 234 of file ARMCore.h.

◆ r6

u32 r6

Definition at line 234 of file ARMCore.h.

◆ r7

u32 r7

Definition at line 234 of file ARMCore.h.

◆ r8

u32 r8

Definition at line 234 of file ARMCore.h.

◆ r9

u32 r9

Definition at line 234 of file ARMCore.h.

◆ sp

u32 sp

Definition at line 233 of file ARMCore.h.

Referenced by MemoryBlock::copy(), and memcpy().