git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Working on GUI, side changes to the message passing
[tpg/acess2.git]
/
Kernel
/
arch
/
x86
/
start.asm
diff --git
a/Kernel/arch/x86/start.asm
b/Kernel/arch/x86/start.asm
index
4dd7603
..
f1d1ea7
100644
(file)
--- a/
Kernel/arch/x86/start.asm
+++ b/
Kernel/arch/x86/start.asm
@@
-39,8
+39,6
@@
start:
jmp ecx
\r
.higherHalf:
\r
\r
jmp ecx
\r
.higherHalf:
\r
\r
- mov DWORD [gaInitPageDir], 0
\r
-
\r
; Call the kernel
\r
push ebx ; Multiboot Info
\r
push eax ; Multiboot Magic Value
\r
; Call the kernel
\r
push ebx ; Multiboot Info
\r
push eax ; Multiboot Magic Value
\r
@@
-56,22
+54,28
@@
start:
; Multiprocessing AP Startup Code (Must be within 0x10FFF0)
\r
;
\r
%if USE_MP
\r
; Multiprocessing AP Startup Code (Must be within 0x10FFF0)
\r
;
\r
%if USE_MP
\r
-[extern gGDTptr]
\r
+[extern gGDT]
\r
+[extern gGDTPtr]
\r
+[extern gIDTPtr]
\r
[extern gpMP_LocalAPIC]
\r
[extern gaAPIC_to_CPU]
\r
[extern gaCPUs]
\r
[extern gpMP_LocalAPIC]
\r
[extern gaAPIC_to_CPU]
\r
[extern gaCPUs]
\r
-[global APStartup]
\r
+[extern giNumInitingCPUs]
\r
+lGDTPtr: ; Local GDT Pointer
\r
+ dw 2*8-1
\r
+ dd gGDT-KERNEL_BASE
\r
\r
[bits 16]
\r
\r
[bits 16]
\r
+[global APStartup]
\r
APStartup:
\r
xchg bx, bx ; MAGIC BREAK!
\r
mov ax, 0xFFFF
\r
mov ds, ax
\r
APStartup:
\r
xchg bx, bx ; MAGIC BREAK!
\r
mov ax, 0xFFFF
\r
mov ds, ax
\r
- lgdt [DWORD ds:
gGDTptr
-0xFFFF0]
\r
+ lgdt [DWORD ds:
lGDTPtr-KERNEL_BASE
-0xFFFF0]
\r
mov eax, cr0
\r
or al, 1
\r
mov cr0, eax
\r
mov eax, cr0
\r
or al, 1
\r
mov cr0, eax
\r
- jmp 08h:DWORD .ProtectedMode
\r
+ jmp 08h:DWORD .ProtectedMode
-KERNEL_BASE
\r
[bits 32]
\r
.ProtectedMode:
\r
; Start Paging
\r
[bits 32]
\r
.ProtectedMode:
\r
; Start Paging
\r
@@
-84,6
+88,10
@@
APStartup:
lea eax, [.higherHalf]
\r
jmp eax
\r
.higherHalf:
\r
lea eax, [.higherHalf]
\r
jmp eax
\r
.higherHalf:
\r
+ ; Load True GDT & IDT
\r
+ lgdt [gGDTPtr]
\r
+ lidt [gIDTPtr]
\r
+
\r
mov eax, [gpMP_LocalAPIC]
\r
mov DWORD [eax], 0
\r
xor ecx, ecx
\r
mov eax, [gpMP_LocalAPIC]
\r
mov DWORD [eax], 0
\r
xor ecx, ecx
\r
@@
-92,7
+100,10
@@
APStartup:
mov cl, BYTE [gaAPIC_to_CPU+ecx]
\r
; CL is now the CPU ID
\r
mov BYTE [gaCPUs+ecx*8+1], 1
\r
mov cl, BYTE [gaAPIC_to_CPU+ecx]
\r
; CL is now the CPU ID
\r
mov BYTE [gaCPUs+ecx*8+1], 1
\r
+ ; Decrement the remaining CPU count
\r
+ dec DWORD [giNumInitingCPUs]
\r
; CPU is now marked as initialised
\r
; CPU is now marked as initialised
\r
+ sti
\r
.hlt:
\r
hlt
\r
jmp .hlt
\r
.hlt:
\r
hlt
\r
jmp .hlt
\r
UCC
git Repository :: git.ucc.asn.au