XenevaOS
Loading...
Searching...
No Matches
aa64lowlevel.h
Go to the documentation of this file.
1
30#ifndef __AA64_LOW_LEVEL_H__
31#define __AA64_LOW_LEVEL_H__
32
33#include <aurora.h>
34
35/*
36 * _getCurrentEL -- returns the current exception level
37 */
39
40/*
41 * read_ttbr0_el1 -- reads the current exception's
42 * page mapping base address
43 */
45
46/*
47 * write_ttbr0_el1 -- writes current page mapping base
48 * address
49 */
51
53
55
56extern void write_both_ttbr(uint64_t physicalBase);
57
59
61
63
65
66/*
67 * read_sctlr_el1 -- reads current system control
68 * register of el1
69 */
71
72/*
73 * write_sctlr_el1 -- write current system control
74 * register of el1
75 * @param sctlr -- system control register value
76 */
78
79/*
80 * dsb_ish -- data syncronization barrier inner shareablity memory
81 * flush, which makes the previous memory access visible for
82 * multi core system
83 */
85
87
89
91
93
94/*
95 * isb_flush -- instruction synchronization flush, flush previous
96 * instruction set
97 */
99
101
103/*
104 * set_vbar_el1 -- set vector base address for el1
105 * @param addr -- address of the vector table
106 */
108
110
112
114
117
119
121
123
125
127
128extern void aa64_write_sysreg(const char* reg, uint64_t value);
129
130extern uint64_t aa64_read_sysreg(const char* reg);
131
132extern void enable_sre();
133
135
137
138extern void set_cntp_ctl_el0(uint64_t val);
139
140
141extern void setupTimerIRQ();
142extern void suspendTimer();
144
146
148
150
152
154
159
160extern void aa64_enter_user(uint64_t stack, uint64_t entryAddr);
161extern void aa64_svc_test();
162extern void aa64_utest();
163extern void dc_ivac(uint64_t address);
164extern void aa64_store_fp(uint8_t* address, uint64_t* fpcr, uint64_t* fpsr);
165extern void aa64_restore_fp(uint8_t* address, uint64_t* fpcr, uint64_t* fpsr);
166extern void data_cache_flush(uint64_t* address);
167AU_EXTERN AU_EXPORT void aa64_data_cache_clean_range(void* addr, size_t size);
168AU_EXTERN AU_EXPORT void aa64_dc_cvac_range(void* addr, size_t sz);
169AU_EXTERN AU_EXPORT void aa64_dc_ivac_range(void* addr, size_t sz);
170extern int gic_cpu_init();
172extern void gic_icc_eoi(uint32_t intid);
174#endif
#define AU_EXTERN
Definition aurora.h:50
#define AU_EXPORT
Definition aurora.h:38
void dc_ivac(uint64_t address)
AU_EXTERN AU_EXPORT void aa64_dc_cvac_range(void *addr, size_t sz)
Definition aa64cpu.c:95
uint32_t read_icc_iidr()
AU_EXTERN AU_EXPORT uint64_t read_mair_el1()
AU_EXTERN AU_EXPORT uint64_t get_cntpct_el0()
uint64_t read_daif()
uint32_t gic_read_intid()
void aa64_utest()
void set_cntp_ctl_el0(uint64_t val)
void gic_icc_eoi(uint32_t intid)
AU_EXTERN AU_EXPORT void write_ttbr0_el1(uint64_t *base)
uint32_t read_midr()
void setupTimerIRQ()
void set_cntp_cval_el0(uint64_t val)
void aa64_restore_fp(uint8_t *address, uint64_t *fpcr, uint64_t *fpsr)
uint64_t readTimerCtl()
AU_EXTERN AU_EXPORT void isb_flush()
AU_EXTERN AU_EXPORT uint64_t read_ttbr1_el1()
int gic_cpu_init()
void aa64_store_fp(uint8_t *address, uint64_t *fpcr, uint64_t *fpsr)
AU_EXTERN AU_EXPORT void write_mair_el1(uint64_t mair)
AU_EXTERN AU_EXPORT void tlb_flush_vmalle1is()
AU_EXTERN AU_EXPORT void _wfi()
AU_EXTERN AU_EXPORT void write_tcr_el1(uint64_t tcr)
AU_EXTERN AU_EXPORT void aa64_data_cache_clean_range(void *addr, size_t size)
Definition aa64cpu.c:76
AU_EXTERN AU_EXPORT uint64_t read_far_el1()
void data_cache_flush(uint64_t *address)
void aa64_svc_test()
uint64_t read_ctr_el0()
void suspendTimer()
AU_EXTERN AU_EXPORT void dc_cvac(uint64_t x0)
void aa64_write_sysreg(const char *reg, uint64_t value)
AU_EXTERN AU_EXPORT void set_kstack(uint64_t stack)
AU_EXTERN AU_EXPORT void tlb_flush(uint64_t virtul_addr)
AU_EXTERN AU_EXPORT void enable_irqs()
uint64_t read_spsr_el1()
uint64_t get_cntvct_el0()
AU_EXTERN AU_EXPORT void dmb_sy()
AU_EXTERN AU_EXPORT void mask_irqs()
AU_EXTERN AU_EXPORT uint64_t read_ttbr0_el1()
AU_EXTERN AU_EXPORT void set_vbar_el1(uint64_t addr)
AU_EXTERN AU_EXPORT uint64_t read_sctlr_el1()
AU_EXTERN AU_EXPORT void dmb_ish()
uint64_t get_cntv_ctl_el0()
AU_EXTERN AU_EXPORT uint64_t read_tcr_el1()
AU_EXTERN AU_EXPORT uint64_t read_elr_el1()
uint64_t read_mpidr_el1()
AU_EXTERN AU_EXPORT uint64_t _getCurrentEL()
AU_EXTERN AU_EXPORT uint64_t get_cntfrq_el0()
AU_EXTERN AU_EXPORT uint64_t get_cpacr_el1()
void aa64_enter_user(uint64_t stack, uint64_t entryAddr)
AU_EXTERN AU_EXPORT void aa64_dc_ivac_range(void *addr, size_t sz)
Definition aa64cpu.c:111
uint64_t read_spsel()
AU_EXTERN AU_EXPORT void dsb_sy_barrier()
uint64_t aa64_read_sysreg(const char *reg)
AU_EXTERN AU_EXPORT void set_cpacr_el1(uint64_t val)
AU_EXTERN AU_EXPORT uint64_t read_esr_el1()
AU_EXTERN AU_EXPORT void write_sctlr_el1(uint64_t sctlr)
uint32_t read_icc_iar1_el1()
void write_both_ttbr(uint64_t physicalBase)
AU_EXTERN AU_EXPORT void write_ttbr1_el1(uint64_t *base)
void enable_sre()
AU_EXTERN AU_EXPORT void dsb_ish()
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165