Cleaning up and commenting
This commit is contained in:
parent
ab1a471857
commit
83f81b9a74
@ -54,17 +54,24 @@ _start:
|
|||||||
mov ds, eax
|
mov ds, eax
|
||||||
mov es, eax
|
mov es, eax
|
||||||
|
|
||||||
|
//; Jump to kernel address space
|
||||||
movabs rax, offset upper_memory
|
movabs rax, offset upper_memory
|
||||||
jmp rax
|
jmp rax
|
||||||
|
|
||||||
upper_memory:
|
upper_memory:
|
||||||
|
|
||||||
|
//; Move stack pointer to kernel space
|
||||||
mov rax, KERNEL_OFFSET
|
mov rax, KERNEL_OFFSET
|
||||||
add rsp, rax
|
add rsp, rax
|
||||||
|
|
||||||
|
//; Remove identity mapping
|
||||||
mov rax, 0
|
mov rax, 0
|
||||||
movabs [BootP4], rax
|
movabs [BootP4], rax
|
||||||
|
|
||||||
|
//; Jump to kmain()
|
||||||
.extern kmain
|
.extern kmain
|
||||||
movabs rax, offset kmain
|
movabs rax, offset kmain
|
||||||
jmp rax
|
call rax
|
||||||
|
|
||||||
|
hlt
|
||||||
|
jmp $
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
void clear_screen()
|
void clear_screen()
|
||||||
{
|
{
|
||||||
unsigned char *vidmem = (void *)(0xB8000 + KERNEL_OFFSET);
|
unsigned char *vidmem = P2V(0xB8000);
|
||||||
for(int i=0; i < 80*24*2; i++)
|
for(int i=0; i < 80*24*2; i++)
|
||||||
*vidmem++ = 0;
|
*vidmem++ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_string(char *str)
|
void print_string(char *str)
|
||||||
{
|
{
|
||||||
unsigned char *vidmem = (void *)(0xB8000 + KERNEL_OFFSET);
|
unsigned char *vidmem = P2V(0xB8000);
|
||||||
while(*str)
|
while(*str)
|
||||||
{
|
{
|
||||||
*vidmem++ = *str++;
|
*vidmem++ = *str++;
|
||||||
|
@ -1,6 +1,19 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#define KERNEL_OFFSET 0xFFFFFF8000000000
|
#define KERNEL_OFFSET 0xFFFFFF8000000000
|
||||||
|
|
||||||
|
#ifdef __ASSEMBLER__
|
||||||
#define V2P(a) ((a) - KERNEL_OFFSET)
|
#define V2P(a) ((a) - KERNEL_OFFSET)
|
||||||
|
#define P2V(a) ((a) + KERNEL_OFFSET)
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
#define V2P(a) ((uintptr_t)(a) - KERNEL_OFFSET)
|
||||||
|
#define P2V(a) ((void *)((uintptr_t)(a) + KERNEL_OFFSET))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define P1_OFFSET(a) (((a)>>12) & 0x1FF)
|
||||||
|
#define P2_OFFSET(a) (((a)>>21) & 0x1FF)
|
||||||
|
#define P3_OFFSET(a) (((a)>>30) & 0x1FF)
|
||||||
|
#define P4_OFFSET(a) (((a)>>39) & 0x1FF)
|
||||||
|
|
||||||
#define PAGE_PRESENT 0x001
|
#define PAGE_PRESENT 0x001
|
||||||
#define PAGE_WRITE 0x002
|
#define PAGE_WRITE 0x002
|
||||||
|
Loading…
x
Reference in New Issue
Block a user