| git.druid.rocks | index | druid520 | kaboom | src/ | kernel/ | vmm_asm.s |
src/kernel/vmm_asm.s
/*
* three tiny wrappers vmm.nsc needs -- nsc has no inline asm and no
* way to reference cr3 or a raw assembler label from nsc directly,
* only through a real extern'd function (same pattern idt_asm.s uses
* for its own isr address getters). get_pd_table itself used to live
* in paging_asm.s; it moved into this file once paging_asm.s was
* retired, so it's defined directly below instead of extern'd in.
*/
.section .text
.global get_cr3
.type get_cr3, @function
get_cr3:
movq %cr3, %rax
ret
.global load_cr3
.type load_cr3, @function
load_cr3:
movq %rdi, %cr3
ret
.global get_pd_table
.type get_pd_table, @function
get_pd_table:
leaq pd(%rip), %rax
ret