Structural Change

This commit is contained in:
secXsQuared 2016-06-04 02:51:14 -07:00
parent e53e396556
commit ac875806d6
10 changed files with 15 additions and 153 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,130 +0,0 @@
org 0x01000000
;void HkSystemInit(PMULTIBOOT_INFO info)
GRUB_LOADED_FLAG equ 0x36d76289
GRUB_MAGIC_NUMBER equ 0xE85250D6
GRUB_ARCHITECTURE equ 0x0
GRUB_CHECK_SUM equ - (GRUB_MAGIC_NUMBER + GRUB_ARCHITECTURE + GRUB_HEADER_LENGTH)
GRUB_HEADER_LENGTH equ (GRUB_HEADER_END - GRUB_HEADER_START)
GRUB_HEADER_START:
dd GRUB_MAGIC_NUMBER
dd GRUB_ARCHITECTURE
dd GRUB_HEADER_LENGTH
dd GRUB_CHECK_SUM
;===================
;Address_tag
GRUB_LOAD_BASE equ 0x01000000 ;1MB
GRUB_ADDRESS_TAG_SIZE equ GRUB_ADDRESS_TAG_END - GRUB_ADDRESS_TAG_START
GRUB_ADDRESS_TAG_START:
dw 0x2 ;type=2
dw 0x0 ;flag=0
dd GRUB_ADDRESS_TAG_SIZE; size
dd GRUB_HEADER_START; Since at the beginning of the file
dd GRUB_ENTRY
dd 0 ;load end
dd 0 ;bss
GRUB_ADDRESS_TAG_END:
;====================
;Entry_tag
GRUB_ENTRY_TAG_SIZE equ GRUB_ENTRY_TAG_END - GRUB_ENTRY_TAG_START
GRUB_ENTRY_TAG_START:
dw 0x3; type=3
dw 0x0; flag=0
dd GRUB_ENTRY_TAG_SIZE
dd GRUB_ENTRY
GRUB_ENTRY_TAG_END:
;====================
;End_tag
dw 0x0
dw 0x0
dd 8
;====================
GRUB_HEADER_END:
%include "pm.inc"
;GDT to load
GDT_DUMMY:
;GDT
DESC_VOID: Descriptor 0,0,0
DESC_GRAPH: Descriptor 0b8000h,0xffff,DA_DRW | DA_DPL3
DESC_FLAT_C: Descriptor 0,0xfffff,DA_CR | DA_32 | DA_LIMIT_4K
DESC_FLAT_RW: Descriptor 0,0xfffff,DA_DRW | DA_32 | DA_LIMIT_4K
GDT_END:
GDT_LENGTH equ GDT_END - GDT_DUMMY - 1
;GDT PTR
GDT_PTR:
dw GDT_LENGTH
dd GDT_DUMMY
;SELECTORS
SLCT_CODE_0 equ DESC_FLAT_C - DESC_VOID
SLCT_GRAPH_0 equ DESC_GRAPH - DESC_VOID
SLCT_DATA_0 equ DESC_FLAT_RW - DESC_VOID
DUMMY_MSG:
db 'Loaded by multiboot2!',0
;stack
times 1024 db 0
_KERNEL_STACK:
GRUB_ENTRY:
[BITS 32]
cli
cmp eax,GRUB_LOADED_FLAG
je LOADED_BY_GRUB
hlt
LOADED_BY_GRUB:
mov eax,_KERNEL_STACK
mov esp,eax
push dword 0
popfd
lgdt [GDT_PTR]
jmp SLCT_CODE_0:Reload_CS
Reload_CS:
mov ax,cs
mov ax,SLCT_DATA_0
mov ss,ax
mov ds,ax
mov es,ax
mov fs,ax
mov ax,SLCT_GRAPH_0
mov gs,ax
push DUMMY_MSG
call _printf
add esp,4
_printf:
;void printf(char* str)
;EAX,ECX,EDX
push ebp
mov ebp,esp
push edi
push esi
mov edi,dword [ss:ebp+8]
xor esi,esi
xor ecx,ecx
.begin:
mov al,byte [ds:edi]
cmp al,0 ;0 ended
je .end
mov byte [gs:esi],al
inc esi
mov byte [gs:esi],0xFF
inc edi
inc esi
jmp .begin
.end:
pop esi
pop edi
mov esp,ebp
pop ebp

View File

@ -1,23 +0,0 @@
cmake_minimum_required(VERSION 2.8.4)
project(Workspace)
MACRO(HEADER_DIRECTORIES return_list)
FILE(GLOB_RECURSE new_list ./*.h)
SET(dir_list "")
FOREACH(file_path ${new_list})
GET_FILENAME_COMPONENT(dir_path ${file_path} PATH)
SET(dir_list ${dir_list} ${dir_path})
ENDFOREACH()
LIST(REMOVE_DUPLICATES dir_list)
SET(${return_list} ${dir_list})
ENDMACRO()
HEADER_DIRECTORIES(header_dirs)
include_directories(${header_dirs})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
file(GLOB_RECURSE SOURCE_FILES ./*.h ./*.c)
add_executable(Workspace ${SOURCE_FILES})

12
x86/grub.cfg Normal file
View File

@ -0,0 +1,12 @@
menuentry "HOS x86 [Dev]" {
multiboot /HOS/kernel32
}
menuentry "HOS x64 [Dev]" {
multiboot /HOS/kernel64
}
menuentry "HOS Multiboot2 [Pending]" {
insmod kernel64
multiboot2 /HOS/multiboot2.bin
}

View File

@ -87,6 +87,9 @@ ALL_OBJ_FILES_64 := $(addprefix $(OUTPUT_DIR)/,$(C_OBJ_FILES_64)) $(addprefix $(
#Commands
x64:
cd x64
make all
all: init compile link buildiso clean
# buildsymbol