nuclear@17: .text nuclear@17: /* enable_paging(void) nuclear@17: * sets the cr0 bit 31 which enables page translation */ nuclear@17: .globl enable_paging nuclear@17: enable_paging: nuclear@17: movl %cr0, %eax nuclear@17: orl $0x80000000, %eax nuclear@17: movl %eax, %cr0 nuclear@17: ret nuclear@17: nuclear@17: /* set_pgdir_addr(uint32_t addr) nuclear@17: * sets the address of the page directory by writing to cr3, which nuclear@17: * also results in a TLB flush. */ nuclear@17: .globl set_pgdir_addr nuclear@17: set_pgdir_addr: nuclear@17: movl 4(%esp), %eax nuclear@17: movl %eax, %cr3 nuclear@17: ret nuclear@17: nuclear@17: /* get_fault_addr(void) nuclear@17: * returns the contents of control register 2, which provides nuclear@17: * the faulting address during a page fault exception nuclear@17: */ nuclear@17: .globl get_fault_addr nuclear@17: get_fault_addr: nuclear@17: movl %cr2, %eax nuclear@17: ret