loading ofw address

This commit is contained in:
aramya 2023-07-01 11:27:07 +01:00
parent 75d8667cb3
commit 3de2240706
4 changed files with 30 additions and 28 deletions

View File

@ -5,10 +5,9 @@ RES = 1600x900x32
SOURCES_C = $(wildcard entry/*.c)
SOURCES_S = $(wildcard entry/*.s)
OBJECTS = $(SOURCES_C:.c=.elf) $(SOURCES_S:.s=.elf)
.PHONY: all clean run debug beige
.PHONY: clean run debug beige
DISK.APM: kernel.elf bootinfo.txt scripts/kpartx.sh
dd bs=512K count=2 if=/dev/zero of=DISK.APM
@ -28,7 +27,7 @@ bootinfo.txt: loader/load.fth loader/def.fth
echo "</boot-script></chrp-boot>" >> bootinfo.txt
kernel.elf: $(OBJECTS)
$(PPC)-ld -Ttext=0x200000 -Tdata=0x300000 $^ -o $@
$(PPC)-ld -Ttext=0x200000 -Tdata=0x300100 $^ -o $@
%.elf: %.c
$(PPC)-gcc -c $< -o $@

View File

@ -6,32 +6,8 @@ void __eabi(void)
{
}
int ofw_test(const char* name)
{
struct
{
char* service;
int n_args;
int n_rets;
char* arg;
int ret;
} ofw_arg;
char _service[5] = "test";
ofw_arg.service = _service;
ofw_arg.n_args = 1;
ofw_arg.n_rets = 1;
ofw_arg.arg = name;
ofw(&ofw_arg);
return ofw_arg.ret;
}
void main(void)
{
asm volatile("stw 5, %0" : "=m"(ofw));
if (ofw_test("open"))
{
asm("mr 27, 28");

24
entry/ofw.c Normal file
View File

@ -0,0 +1,24 @@
extern void (*ofw)();
int ofw_test(char* name)
{
struct
{
char* service;
int n_args;
int n_rets;
char* arg;
int ret;
} ofw_arg;
char _service[5] = "test";
ofw_arg.service = _service;
ofw_arg.n_args = 1;
ofw_arg.n_rets = 1;
ofw_arg.arg = name;
ofw(&ofw_arg);
return ofw_arg.ret;
}

View File

@ -1,4 +1,7 @@
.globl _start
.globl ofw
.extern ofw
_start:
lis 9, ofw@ha
ori 9, 9, ofw@l
stw 5, 0(9)
b main