Skip to content

Commit

Permalink
Add support for writting to memory with MMU activated
Browse files Browse the repository at this point in the history
  • Loading branch information
fallen committed Jun 6, 2012
1 parent 795cb9d commit 033c430
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion software/mmu-bios/mmu.c
Expand Up @@ -162,7 +162,7 @@ unsigned int read_word_with_mmu_enabled(unsigned int vaddr)
"xor r0, r0, r0\n\t"
"xor r11, r11, r11\n\t"
"or r11, r11, %1\n\t"
"lw %0, (r11+0)\n\t" // Reads from virtual address "addr"
"lw %0, (r11+0)\n\t" // Reads from virtual address "vaddr"
"xor r11, r11, r11\n\t"
"ori r11, r11, 0x9\n\t"
"wcsr tlbctrl, r11\n\t" // Disactivates the MMU
Expand All @@ -171,3 +171,18 @@ unsigned int read_word_with_mmu_enabled(unsigned int vaddr)

return data;
}

unsigned int write_word_with_mmu_enabled(register unsigned int vaddr, register unsigned int data)
{
asm volatile(
"xor r11, r11, r11\n\t"
"ori r11, r11, 0x11\n\t"
"wcsr tlbctrl, r11\n\t" // Activates the MMU
"xor r0, r0, r0\n\t"
"sw (%0 + 0), %1\n\t" // Writes "data" to virtual address "vaddr"
"xor r11, r11, r11\n\t"
"ori r11, r11, 0x9\n\t"
"wcsr tlbctrl, r11\n\t" // Disactivates the MMU
"xor r0, r0, r0\n\t" :: "r"(vaddr), "r"(data) : "r11"
);
}

0 comments on commit 033c430

Please sign in to comment.