Skip to content

Commit

Permalink
Merge pull request #416 from no92/riscv-uefi
Browse files Browse the repository at this point in the history
managarm-kernel-uefi: enable for RISC-V
  • Loading branch information
avdgrinten authored Nov 21, 2024
2 parents 2d7bbb6 + 7312cb6 commit a9d976c
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 28 deletions.
4 changes: 2 additions & 2 deletions bootstrap.d/tasks.y4.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ tasks:
- limine
- managarm-kernel
- !managarm::arch_dep
arch: [x86_64]
arch: [x86_64, riscv64]
item: managarm-kernel-uefi
- managarm-system
tools_required:
Expand All @@ -84,7 +84,7 @@ tasks:
- limine
- managarm-kernel
- !managarm::arch_dep
arch: [x86_64]
arch: [x86_64, riscv64]
item: managarm-kernel-uefi
- managarm-system
tools_required:
Expand Down
44 changes: 44 additions & 0 deletions scripts/meson-kernel-uefi-riscv64-managarm.cross-file
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
[binaries]
c = 'clang'
cpp = 'clang++'
c_ld = 'lld'
cpp_ld = 'lld'
pkgconfig = 'riscv64-managarm-pkg-config'
strip = 'true'

[built-in options]
c_args = [
'-target', 'riscv64-linux-gnu',
'-march=rva22u64',
'-mcmodel=medany',
'-msmall-data-limit=0',
'-mno-relax',
'-fno-stack-protector',
'-fno-asynchronous-unwind-tables',
'-fno-unwind-tables',
'-fpack-struct=8',
'-flto']
cpp_args = c_args
cpp_link_args = [
'-target', 'riscv64-linux-gnu',
'-march=rva22u64',
'-mcmodel=medany',
'-msmall-data-limit=0',
'-mno-relax',
'-Wl,-melf64lriscv,--oformat=elf64-littleriscv,--no-relax',
'-fno-strict-aliasing',
'-fno-asynchronous-unwind-tables',
'-fno-unwind-tables',
'-fpack-struct=8',
'-flto',
'-Wl,-q,--gc-sections,-static,-pie,--no-dynamic-linker,-z,text']

[host_machine]
system = 'linux'
cpu_family = 'riscv64'
cpu = 'riscv64'
endian = 'little'

[properties]
native_pe_toolchain = false
pecoff_header_size = 0x240
1 change: 1 addition & 0 deletions scripts/update-image.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,7 @@ def generate_plan(arch, root_uuid, scriptdir):
), "boot/", "@ROOT_UUID@", root_uuid
elif arch == "riscv64-managarm":
yield FsAction.INSTALL, "usr/managarm/bin/eir-limine", "boot/managarm"
yield FsAction.INSTALL, "usr/managarm/bin/eir-uefi", "boot/managarm"
yield (
FsAction.CP,
"system-root/usr/share/limine/BOOTRISCV64.EFI",
Expand Down
52 changes: 26 additions & 26 deletions scripts/vm-util.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,9 @@ def do_qemu(args):
elif args.arch == "riscv64":
# Use the virt machine and -kernel, similar to aarch64.
qemu_args += ["-machine", "virt"]
qemu_args += ["-kernel", "system-root/usr/managarm/bin/eir-virt"]
qemu_args += ["-serial", "stdio"]
if not args.uefi:
qemu_args += ["-kernel", "system-root/usr/managarm/bin/eir-virt"]
else:
assert args.arch == "x86_64"
qemu_args += ["-debugcon", "stdio"]
Expand Down Expand Up @@ -279,31 +280,30 @@ def do_qemu(args):
]

# Add the boot medium.
if args.arch != "riscv64":
qemu_args += ["-drive", "id=boot-drive,file=image,format=raw,if=none"]

if args.boot_drive == "virtio":
qemu_args += ["-device", "virtio-blk-pci,drive=boot-drive"]
elif args.boot_drive == "virtio-legacy":
qemu_args += [
"-device",
"virtio-blk-pci,disable-modern=on,drive=boot-drive",
]
elif args.boot_drive == "ahci":
qemu_args += [
"-device",
"ahci,id=ahci",
"-device",
"ide-hd,drive=boot-drive,bus=ahci.0",
]
elif args.boot_drive == "usb":
# Use EHCI for now since XHCI hangs on boot.
qemu_args += ["-device", "usb-storage,drive=boot-drive,bus=ehci.0"]
elif args.boot_drive == "nvme":
qemu_args += ["-device", "nvme,serial=deadbeef,drive=boot-drive"]
else:
assert args.boot_drive == "ide"
qemu_args += ["-device", "ide-hd,drive=boot-drive,bus=ide.0"]
qemu_args += ["-drive", "id=boot-drive,file=image,format=raw,if=none"]

if args.boot_drive == "virtio":
qemu_args += ["-device", "virtio-blk-pci,drive=boot-drive"]
elif args.boot_drive == "virtio-legacy":
qemu_args += [
"-device",
"virtio-blk-pci,disable-modern=on,drive=boot-drive",
]
elif args.boot_drive == "ahci":
qemu_args += [
"-device",
"ahci,id=ahci",
"-device",
"ide-hd,drive=boot-drive,bus=ahci.0",
]
elif args.boot_drive == "usb":
# Use EHCI for now since XHCI hangs on boot.
qemu_args += ["-device", "usb-storage,drive=boot-drive,bus=ehci.0"]
elif args.boot_drive == "nvme":
qemu_args += ["-device", "nvme,serial=deadbeef,drive=boot-drive"]
else:
assert args.boot_drive == "ide"
qemu_args += ["-device", "ide-hd,drive=boot-drive,bus=ide.0"]

# Add networking.
if args.net_bridge:
Expand Down

0 comments on commit a9d976c

Please sign in to comment.