added more files

This commit is contained in:
Morten Delenk 2017-07-29 12:06:30 +01:00
parent e680da775a
commit 2d7c0a36fe
5 changed files with 115 additions and 4 deletions

4
.gitignore vendored
View file

@ -10,8 +10,4 @@ iso/kernel
*.firm *.firm
html/ html/
latex/ latex/
int.s
regs.h
out/ out/
*.mmap
*.mh

View file

@ -0,0 +1,21 @@
#include <stdint.h>
struct cpu_state {
uint32_t cpsr;
uint32_t sp;
uint32_t lr;
uint32_t returnAddr;
uint32_t r0;
uint32_t r1;
uint32_t r2;
uint32_t r3;
uint32_t r4;
uint32_t r5;
uint32_t r6;
uint32_t r7;
uint32_t r8;
uint32_t r9;
uint32_t r10;
uint32_t r11;
uint32_t r12;
uint32_t pc;
};

89
kernel/arch/arm/int.s Normal file
View file

@ -0,0 +1,89 @@
.arm
.fpu vfpv2
.section .bss
.space 4096
exception_stack:
.section .data
.space 4
oldsp:
.section .text
.global branch_macro
branch_macro:
ldr pc, [pc, #-4] //Load the next word into PC
.macro interrupt_handler intid
push {r0-r12,lr} //Push registers
//Get previous sp and lr
mrs r1, cpsr //Current mode
mrs r0, spsr //Previous mode
orr r0, #0xC0 //Disable interrupts in the previous mode
bic r0, #0x20 //enable ARM mode in there
//If the mode is user, switch to system mode
and r2, r0, #0x1F
cmp r2, #0x10
bne 1f
orr r0, #0x1F
1:
//Change mode
msr cpsr, r0
mov r2, sp
mov r3, lr
//Switch back
msr cpsr, r1
mrs r0, spsr
//Push those registers
push {r0, r2, r3, lr}
//Set argument 1
ldr r0, =\intid
//Jump to generic handler
bl intr_common_handler
//pop the special registers
pop {r0, r3, r4, lr}
msr spsr, r0
tst r0, #0x20 //Is code ARM or thumb?
beq 2f
orr lr, lr, #1 //Enable thumb mode on return#
2:
str lr, [sp, #0x34] //Set correct lr
ldmfd sp!, {r0-r12, pc}^ //Return back to original mode
.endm
.global data_abort
data_abort:
interrupt_handler 0
.global fast_irq
fast_irq:
interrupt_handler 1
.global normal_irq
normal_irq:
interrupt_handler 2
.global prefetch_abort
prefetch_abort:
interrupt_handler 3
.global svc_call
svc_call:
interrupt_handler 4
.global undefined_op
undefined_op:
interrupt_handler 5
.extern handleINT
intr_common_handler:
mov r1, sp
push {lr}
blx handleINT
pop {lr}
mov sp, r0
bx lr
.global panic
.extern panic2
panic:
push {r0-r12,lr}
mov r1, sp
b panic

5
kernel/mmaps/3ds9.mh Normal file
View file

@ -0,0 +1,5 @@
#pragma once
#include <stdint.h>
uint8_t mmap[] = {
0x4d, 0x4d, 0x41, 0x50, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x4, 0x33, 0x44, 0x53, 0x39, 0x2, 0x1, 0x2, 0x3, 0x1, 0x1, 0x4, 0x1, 0x20, 0x5, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x6, 0x5, 0x9, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x10, 0x8, 0x7, 0x5, 0x9, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x18, 0x6, 0x5, 0x9, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x60, 0x18, 0x6, 0x5, 0x9, 0x0, 0x0, 0xf0, 0x1f, 0x0, 0x0, 0xf8, 0x1f, 0x6, 0x5, 0x9, 0x0, 0x0, 0xf8, 0x1f, 0x0, 0x0, 0x0, 0x20, 0x6, 0x5, 0x9, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0, 0x28, 0x6, 0x5, 0x9, 0x0, 0x0, 0xf0, 0xff, 0x0, 0x40, 0xf0, 0xff, 0x6, 0x5, 0x9, 0x0, 0x0, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x5,
};

BIN
kernel/mmaps/3ds9.mmap Normal file

Binary file not shown.