blob: d046098204894ac58701e7c3fec62b544ab98ad7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#
# ========================================================
#
# NeBoot
# Date Added: 08/11/2023
# Copyright 2024, Amlal El Mahrouss, all rights reserved.
#
# ========================================================
#
CC=ppc-elf-gcc
AS=ppc-elf-as
FIRMWARE=boot.rom
FLAGS=-c -mcpu=e5500 -D__COMPILE_POWERPC__ -I../../ -Wall -c -nostdlib -ffreestanding -fno-builtin \
-D__BSTRICT__ -D__BDEBUG__
C_SRC=$(wildcard *.c) $(wildcard ../*.c) -c
AS_FLAGS= -c -I../../
LD=ppc-elf-ld
OBJ=*.o
FLAGS_LD= --script=linkscript.ld -o core-boot.elf -nostdlib
EMU=qemu-system-ppc64
EMU_FLAGS= -drive file=epm.img,media=disk,snapshot=off,format=raw \
-device virtio-scsi-pci,id=scsi -smp 4 -device VGA -cpu e5500 -d guest_errors,unimp \
-M ppce500 -bios $(FIRMWARE) -s
WAIT=sleep 1
IMG_CMD=qemu-img create -f qcow2 epm.img 256M
.PHONY: all
all: firmware-link
@echo "[NeBoot] build done."
.PHONY: firmware-link
firmware-link: firmware-compile
$(LD) $(OBJ) $(FLAGS_LD)
$(IMG_CMD)
qemu-img create -f raw boot.rom 512K
dd if=core-boot.elf of=boot.rom bs=1 seek=0 conv=notrunc
# compile firmware
.PHONY: firmware-compile
firmware-compile:
$(CC) $(FLAGS) $(C_SRC)
$(AS) $(AS_FLAGS) ppc64-boot.S -o ppc64-boot.o
# launch qemu rule
.PHONY: run
run:
$(EMU) $(EMU_FLAGS)
# launch qemu with attached debugger
.PHONY: run-dbg
run-dbg:
$(EMU) $(EMU_FLAGS)
# remove object files
.PHONY: clean
clean:
rm -f $(wildcard *.o) $(wildcard *.elf) $(wildcard *.rom) $(wildcard *.epm)
|