keigo1216 / ketchup

raspberrypi 3A+用のOS
1 stars 0 forks source link

implement simple system call #35

Closed keigo1216 closed 10 months ago

keigo1216 commented 10 months ago

システムコールを実装する

keigo1216 commented 10 months ago

ユーザーランド側からsvc #0でカーネルへ例外を出すと、handle_trapは呼び出されるが、printfのアドレスが違うか何かで呼び出すことができていない カーネル側からsvc #0で例外を出すと場合はうまくいっている

考えられるバグ

keigo1216 commented 10 months ago

UARTのメモリマップしてる部分のkernel空間のページへマップされていないみたいなので、カーネルのブート時にマップするようにしたい

https://github.com/keigo1216/ketchup/blob/9bf16bc96ad2c70016892d56d999187a262c9c71/common/common.h#L20-L22

*uart_flagにアクセスする際に例外を出しているみたい https://github.com/keigo1216/ketchup/blob/9bf16bc96ad2c70016892d56d999187a262c9c71/kernel/print.c#L10

keigo1216 commented 10 months ago

スタックレジスタの設定を変更した

// Use SP_ELt (EL1 => SP_EL1, EL0 => SP_EL0)
msr     SPSel, #1