48 __asm__ __volatile__(
"mrc p15, 0, %0, c1, c0, 0"
66 __asm__ __volatile__(
"mcr p15, 0, %0, c1, c0, 0"
93 uint32_t *page_table = mmu_base_addr;
99#ifdef CONFIG_CHIP_DCACHE
100 page_table[0] = (3 << 10) | (15 << 5) | (1 << 3) | (1 << 2) | 0x2;
102 page_table[0] = (3 << 10) | (15 << 5) | (1 << 3) | (0 << 2) | 0x2;
105 for (i = 1; i < (dram_base >> 20); i++) { page_table[i] = (i << 20) | (3 << 10) | (15 << 5) | (0 << 3) | 0x2; }
107 for (i = (dram_base >> 20); i < 4096; i++) {
108#ifdef CONFIG_CHIP_DCACHE
109 page_table[i] = (i << 20) | (3 << 10) | (15 << 5) | (1 << 3) | (1 << 2) | 0x2;
111 page_table[i] = (i << 20) | (3 << 10) | (15 << 5) | (1 << 3) | (0 << 2) | 0x2;
115 asm volatile(
"mcr p15, 0, %0, c8, c7, 0"
119 mmu_base = (
uint32_t) mmu_base_addr;
120 mmu_base |= (1 << 0) | (1 << 1) | (2 << 3);
121 asm volatile(
"mcr p15, 0, %0, c2, c0, 0"
125 asm volatile(
"mcr p15, 0, %0, c2, c0, 1"
130 asm volatile(
"mcr p15, 0, %0, c3, c0, 0"
135#ifdef CONFIG_CHIP_DCACHE
137 asm volatile(
"mrc p15, 0, r0, c1, c0, 1");
138 asm volatile(
"orr r0, r0, #0x040");
139 asm volatile(
"mcr p15, 0, r0, c1, c0, 1");
143 asm volatile(
"mrc p15, 0, %0, c1, c0, 0 @ get CR"
149 reg |= ((1 << 0) | (1 << 12));
153 asm volatile(
"mcr p15, 0, %0, c1, c0, 0 @ set CR"
171 asm volatile(
"mrc p15, 0, %0, c1, c0, 0 @ get CR"
176 reg &= ~((7 << 0) | (1 << 12));
177 asm volatile(
"mcr p15, 0, %0, c1, c0, 0 @ set CR"
186 asm volatile(
"mcr p15, 0, %0, c7, c5, 0"
190 asm volatile(
"mcr p15, 0, %0, c7, c5, 6"
void sdelay(unsigned long us)
Definition sys-clock.c:18
static void arm32_mmu_disable(void)
Disable the ARM32 MMU and clear caches.
Definition mmu.h:167
static void arm32_mmu_enable(const uint32_t dram_base, uint32_t dram_size)
Enable the ARM32 MMU with specific memory configuration.
Definition mmu.h:85
static uint32_t arm32_read_p15_c1(void)
Read the ARM32 system control register (CP15, c1).
Definition mmu.h:45
static void arm32_write_p15_c1(uint32_t value)
Write to the ARM32 system control register (CP15, c1).
Definition mmu.h:65
u32_t uint32_t
Definition stdint.h:13
static uint32_t dram_size
Definition sys-dram.c:22
static uint8_t value
Definition io.h:144
#define printk_trace(fmt,...)
Definition log.h:44
Memory barrier definitions for RISC-V architecture.
Cache control functions for RISC-V architecture.
Interrupt control functions for RISC-V architecture.
ARM32 register structure.
Definition mmu.h:28
uint32_t r[13]
General purpose registers R0-R12.
Definition mmu.h:31
uint32_t pc
Program counter (R15)
Definition mmu.h:34
uint32_t lr
Link register (R14)
Definition mmu.h:33
uint32_t esp
Extended stack pointer.
Definition mmu.h:29
uint32_t cpsr
Current Program Status Register.
Definition mmu.h:30
uint32_t sp
Stack pointer (R13)
Definition mmu.h:32