Reload selector registers and print OKAY

This commit is contained in:
Philipp Oppermann
2015-08-13 13:22:58 +02:00
parent 9c4b8fef9d
commit 7e898e6a4c
2 changed files with 31 additions and 3 deletions

View File

@@ -13,6 +13,7 @@
; limitations under the License.
global start
extern long_mode_start
section .text
bits 32
@@ -29,9 +30,13 @@ start:
; load the 64-bit GDT
lgdt [gdt64.pointer]
; print `OK` to screen
mov dword [0xb8000], 0x2f4b2f4f
hlt
; update selectors
mov ax, gdt64.data
mov ss, ax
mov ds, ax
mov es, ax
jmp gdt64.code:long_mode_start
setup_page_tables:
; map first P4 entry to P3 table

View File

@@ -0,0 +1,23 @@
; Copyright 2015 Philipp Oppermann
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
; http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
global long_mode_start
section .text
bits 64
long_mode_start:
; print `OKAY` to screen
mov rax, 0x2f592f412f4b2f4f
mov qword [0xb8000], rax
hlt