move kernel constants/macros to its own include
This commit is contained in:
parent
1bf6a13bd4
commit
f5590e7f5d
4 changed files with 62 additions and 61 deletions
61
inc/kernel.inc
Normal file
61
inc/kernel.inc
Normal file
|
@ -0,0 +1,61 @@
|
|||
// "kernel" constants:
|
||||
constant K_BASE(0x8000) // k0 is set to this.
|
||||
|
||||
constant K_DUMP(0x0400) // we save registers and state here
|
||||
// when handling interrupts
|
||||
|
||||
constant K_REASON(0x0600)
|
||||
constant K_CAUSE(0x0604)
|
||||
constant K_STATUS(0x0608)
|
||||
constant K_IN_MAIN(0x060C)
|
||||
constant K_EPC(0x0610)
|
||||
constant K_ERRORPC(0x0614)
|
||||
constant K_BADVADDR(0x0618)
|
||||
|
||||
constant K_64DRIVE_MAGIC(0x0700)
|
||||
constant K_CI_BASE(0x0704)
|
||||
constant K_CONSOLE_AVAILABLE(0x0708)
|
||||
|
||||
constant K_STACK(0x0C00 - 0x10)
|
||||
constant K_XXD(0x0C00) // size: 0x400 (any larger and you overwrite kernel code)
|
||||
|
||||
// note this gets subtracted by 0x10 and the stack grows *backwards.*
|
||||
constant K_STACK_INIT_BASE(0x803F)
|
||||
|
||||
// internal interrupt enum: (0 means no known interrupt/exception)
|
||||
constant K_INT_TLB_REFILL(1)
|
||||
constant K_INT_XTLB_REFILL(2)
|
||||
constant K_INT_CACHE_ERROR(3)
|
||||
constant K_INT_OTHER(4)
|
||||
|
||||
macro KDumpString(name) {
|
||||
// does not include error/console-checking!
|
||||
// note: this first instruction must be okay to be in a delay slot.
|
||||
la a2, {name}
|
||||
jal Drive64WriteDirect
|
||||
lli a3, {name}X - {name}
|
||||
}
|
||||
|
||||
macro KMaybeDumpString(str) {
|
||||
lw t1, K_CONSOLE_AVAILABLE(k0)
|
||||
beqz t1,+
|
||||
KDumpString({str})
|
||||
+
|
||||
}
|
||||
|
||||
macro KString(name, str) {
|
||||
align(16)
|
||||
{name}:
|
||||
db {str}, 0
|
||||
align(16)
|
||||
{name}X:
|
||||
}
|
||||
|
||||
macro KStringLine(name, str) {
|
||||
align(16)
|
||||
{name}:
|
||||
db {str}, 10, 0
|
||||
align(16)
|
||||
{name}X:
|
||||
}
|
||||
|
30
inc/main.inc
30
inc/main.inc
|
@ -5,36 +5,6 @@ constant K_DEBUG(1) // slows down interrupt handling to enable debug routines
|
|||
constant UNCACHED(0xA0000000)
|
||||
constant ADDR_MASK(0x1FFFFFFF)
|
||||
|
||||
// "kernel" constants:
|
||||
constant K_BASE(0x8000) // k0 is set to this.
|
||||
|
||||
constant K_DUMP(0x0400) // we save registers and state here
|
||||
// when handling interrupts
|
||||
|
||||
constant K_REASON(0x0600)
|
||||
constant K_CAUSE(0x0604)
|
||||
constant K_STATUS(0x0608)
|
||||
constant K_IN_MAIN(0x060C)
|
||||
constant K_EPC(0x0610)
|
||||
constant K_ERRORPC(0x0614)
|
||||
constant K_BADVADDR(0x0618)
|
||||
|
||||
constant K_64DRIVE_MAGIC(0x0700)
|
||||
constant K_CI_BASE(0x0704)
|
||||
constant K_CONSOLE_AVAILABLE(0x0708)
|
||||
|
||||
constant K_STACK(0x0C00 - 0x10)
|
||||
constant K_XXD(0x0C00) // size: 0x400 (any larger and you overwrite kernel code)
|
||||
|
||||
// note this gets subtracted by 0x10 and the stack grows *backwards.*
|
||||
constant K_STACK_INIT_BASE(0x803F)
|
||||
|
||||
// internal interrupt enum: (0 means no known interrupt/exception)
|
||||
constant K_INT_TLB_REFILL(1)
|
||||
constant K_INT_XTLB_REFILL(2)
|
||||
constant K_INT_CACHE_ERROR(3)
|
||||
constant K_INT_OTHER(4)
|
||||
|
||||
constant BLAH_BASE(0x803F)
|
||||
constant BLAH_COUNTS(0x0010)
|
||||
constant BLAH_SP_TASK(0x0040)
|
||||
|
|
31
kernel.asm
31
kernel.asm
|
@ -1,37 +1,6 @@
|
|||
// not really a kernel,
|
||||
// just handling some low-level stuff like interrupts.
|
||||
|
||||
macro KDumpString(name) {
|
||||
// does not include error/console-checking!
|
||||
// note: this first instruction must be okay to be in a delay slot.
|
||||
la a2, {name}
|
||||
jal Drive64WriteDirect
|
||||
lli a3, {name}X - {name}
|
||||
}
|
||||
|
||||
macro KMaybeDumpString(str) {
|
||||
lw t1, K_CONSOLE_AVAILABLE(k0)
|
||||
beqz t1,+
|
||||
KDumpString({str})
|
||||
+
|
||||
}
|
||||
|
||||
macro KString(name, str) {
|
||||
align(16)
|
||||
{name}:
|
||||
db {str}, 0
|
||||
align(16)
|
||||
{name}X:
|
||||
}
|
||||
|
||||
macro KStringLine(name, str) {
|
||||
align(16)
|
||||
{name}:
|
||||
db {str}, 10, 0
|
||||
align(16)
|
||||
{name}X:
|
||||
}
|
||||
|
||||
Start:
|
||||
mtc0 r0, CP0_Cause // clear cause
|
||||
lui gp, K_BASE
|
||||
|
|
1
main.asm
1
main.asm
|
@ -18,6 +18,7 @@ insert "bin/6102.bin"
|
|||
|
||||
include "inc/main.inc"
|
||||
|
||||
include "inc/kernel.inc"
|
||||
include "kernel.asm"
|
||||
|
||||
nops(0x80010000)
|
||||
|
|
Loading…
Reference in a new issue