kern
annotate src/vm-asm.S @ 18:096807345aa2
fixed the stupid mistake. forgot to page-align the page directory
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 27 Mar 2011 06:28:26 +0300 |
parents | |
children | 5454cee245a3 |
rev | line source |
---|---|
nuclear@17 | 1 .text |
nuclear@17 | 2 /* enable_paging(void) |
nuclear@17 | 3 * sets the cr0 bit 31 which enables page translation */ |
nuclear@17 | 4 .globl enable_paging |
nuclear@17 | 5 enable_paging: |
nuclear@17 | 6 movl %cr0, %eax |
nuclear@17 | 7 orl $0x80000000, %eax |
nuclear@17 | 8 movl %eax, %cr0 |
nuclear@17 | 9 ret |
nuclear@17 | 10 |
nuclear@17 | 11 /* set_pgdir_addr(uint32_t addr) |
nuclear@17 | 12 * sets the address of the page directory by writing to cr3, which |
nuclear@17 | 13 * also results in a TLB flush. */ |
nuclear@17 | 14 .globl set_pgdir_addr |
nuclear@17 | 15 set_pgdir_addr: |
nuclear@17 | 16 movl 4(%esp), %eax |
nuclear@17 | 17 movl %eax, %cr3 |
nuclear@17 | 18 ret |
nuclear@17 | 19 |
nuclear@17 | 20 /* get_fault_addr(void) |
nuclear@17 | 21 * returns the contents of control register 2, which provides |
nuclear@17 | 22 * the faulting address during a page fault exception |
nuclear@17 | 23 */ |
nuclear@17 | 24 .globl get_fault_addr |
nuclear@17 | 25 get_fault_addr: |
nuclear@17 | 26 movl %cr2, %eax |
nuclear@17 | 27 ret |