Switching to PM

pull/15/head
E. Almqvist 3 years ago
parent 8325d90e9b
commit 39166e7863
  1. 29
      src/pm.asm

@ -6,8 +6,29 @@
%include "pm/gdt.asm" ; GDT defined here %include "pm/gdt.asm" ; GDT defined here
; Switching to PM ; Switching to PM
lgdt [gdt_descriptor] ; Tell the CPU about the GDT [bits 16]
switch_to_pm:
cli ; Switch interupts
lgdt [gdt_descriptor] ; Tell the CPU about the GDT
mov eax, cr0 ; Set first bit of the CR0 register
or eax, 0x1 ; to 1
mov cr0, eax ; Update the control register
[bits 32]
; Init registers & stack when in PM
init_pm:
mov ax, GDT_DATA_SEG ; Point the segment registers to GDT_DATA_SEG
; Segment registers
mov ds, ax
mov ss, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ebp, 0x900000 ; Update the stack pointer
mov esp, ebp
call BEGIN_PM
mov eax, cr0 ; Set first bit of the CR0 register
or eax, 0x1 ; to 1
mov cr0, eax ; Update the control register

Loading…
Cancel
Save