mirror of
https://github.com/XunilGroup/XunilOS.git
synced 2026-06-02 12:44:24 +02:00
Remove unneccessary debug, increase kernel heap to 64mb, add a global
build_and_run script, fix build.rs sometimes using the wrong architecture, add badapple ELF and change default font size to 1 for it to work, improve framebuffer errors, remove unnecessary commands from make and improve debug filtering
This commit is contained in:
@@ -7,3 +7,6 @@
|
|||||||
[submodule "user/init"]
|
[submodule "user/init"]
|
||||||
path = user/init
|
path = user/init
|
||||||
url = git@github.com:XunilGroup/xunil-init.git
|
url = git@github.com:XunilGroup/xunil-init.git
|
||||||
|
[submodule "user/apps/badapple"]
|
||||||
|
path = user/apps/badapple
|
||||||
|
url = https://github.com/XunilGroup/xunil_badapple.git
|
||||||
|
|||||||
+3
-124
@@ -10,15 +10,9 @@ override IMAGE_NAME := XunilOS-$(KARCH)
|
|||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(IMAGE_NAME).iso
|
all: $(IMAGE_NAME).iso
|
||||||
|
|
||||||
.PHONY: all-hdd
|
|
||||||
all-hdd: $(IMAGE_NAME).hdd
|
|
||||||
|
|
||||||
.PHONY: run
|
.PHONY: run
|
||||||
run: run-$(KARCH)
|
run: run-$(KARCH)
|
||||||
|
|
||||||
.PHONY: run-hdd
|
|
||||||
run-hdd: run-hdd-$(KARCH)
|
|
||||||
|
|
||||||
.PHONY: run-x86_64
|
.PHONY: run-x86_64
|
||||||
run-x86_64: edk2-ovmf $(IMAGE_NAME).iso
|
run-x86_64: edk2-ovmf $(IMAGE_NAME).iso
|
||||||
qemu-system-$(KARCH) \
|
qemu-system-$(KARCH) \
|
||||||
@@ -35,15 +29,7 @@ debug-x86_64: edk2-ovmf $(IMAGE_NAME).iso
|
|||||||
-serial stdio \
|
-serial stdio \
|
||||||
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
||||||
-cdrom $(IMAGE_NAME).iso \
|
-cdrom $(IMAGE_NAME).iso \
|
||||||
-d in_asm,int,mmu -D /tmp/qemu_trace.log 2>/dev/null \
|
-d in_asm,int,mmu -dfilter 0xffffffff80000000..0xffffffff80010000 -D /tmp/qemu_trace.log 2>/dev/null \
|
||||||
$(QEMUFLAGS)
|
|
||||||
|
|
||||||
.PHONY: run-hdd-x86_64
|
|
||||||
run-hdd-x86_64: edk2-ovmf $(IMAGE_NAME).hdd
|
|
||||||
qemu-system-$(KARCH) \
|
|
||||||
-M q35 \
|
|
||||||
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
|
||||||
-hda $(IMAGE_NAME).hdd \
|
|
||||||
$(QEMUFLAGS)
|
$(QEMUFLAGS)
|
||||||
|
|
||||||
.PHONY: run-aarch64
|
.PHONY: run-aarch64
|
||||||
@@ -78,88 +64,7 @@ debug-aarch64: edk2-ovmf $(IMAGE_NAME).iso
|
|||||||
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
||||||
-cdrom $(IMAGE_NAME).iso \
|
-cdrom $(IMAGE_NAME).iso \
|
||||||
-semihosting-config enable=on,target=native \
|
-semihosting-config enable=on,target=native \
|
||||||
-d in_asm,int,mmu -D /tmp/qemu_trace.log 2>/dev/null
|
-d in_asm,int,mmu -dfilter 0xffffffff80000000..0xffffffff80010000 -D /tmp/qemu_trace.log 2>/dev/null \
|
||||||
$(QEMUFLAGS)
|
|
||||||
|
|
||||||
.PHONY: run-hdd-aarch64
|
|
||||||
run-hdd-aarch64: edk2-ovmf $(IMAGE_NAME).hdd
|
|
||||||
qemu-system-$(KARCH) \
|
|
||||||
-M virt \
|
|
||||||
-cpu cortex-a72 \
|
|
||||||
-device ramfb \
|
|
||||||
-device qemu-xhci \
|
|
||||||
-device usb-kbd \
|
|
||||||
-device usb-mouse \
|
|
||||||
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
|
||||||
-hda $(IMAGE_NAME).hdd \
|
|
||||||
$(QEMUFLAGS)
|
|
||||||
|
|
||||||
.PHONY: run-riscv64
|
|
||||||
run-riscv64: edk2-ovmf $(IMAGE_NAME).iso
|
|
||||||
qemu-system-$(KARCH) \
|
|
||||||
-M virt \
|
|
||||||
-cpu rv64 \
|
|
||||||
-device ramfb \
|
|
||||||
-device qemu-xhci \
|
|
||||||
-device usb-kbd \
|
|
||||||
-device usb-mouse \
|
|
||||||
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
|
||||||
-cdrom $(IMAGE_NAME).iso \
|
|
||||||
$(QEMUFLAGS)
|
|
||||||
|
|
||||||
.PHONY: run-hdd-riscv64
|
|
||||||
run-hdd-riscv64: edk2-ovmf $(IMAGE_NAME).hdd
|
|
||||||
qemu-system-$(KARCH) \
|
|
||||||
-M virt \
|
|
||||||
-cpu rv64 \
|
|
||||||
-device ramfb \
|
|
||||||
-device qemu-xhci \
|
|
||||||
-device usb-kbd \
|
|
||||||
-device usb-mouse \
|
|
||||||
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
|
||||||
-hda $(IMAGE_NAME).hdd \
|
|
||||||
$(QEMUFLAGS)
|
|
||||||
|
|
||||||
.PHONY: run-loongarch64
|
|
||||||
run-loongarch64: edk2-ovmf $(IMAGE_NAME).iso
|
|
||||||
qemu-system-$(KARCH) \
|
|
||||||
-M virt \
|
|
||||||
-cpu la464 \
|
|
||||||
-device ramfb \
|
|
||||||
-device qemu-xhci \
|
|
||||||
-device usb-kbd \
|
|
||||||
-device usb-mouse \
|
|
||||||
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
|
||||||
-cdrom $(IMAGE_NAME).iso \
|
|
||||||
$(QEMUFLAGS)
|
|
||||||
|
|
||||||
.PHONY: run-hdd-loongarch64
|
|
||||||
run-hdd-loongarch64: edk2-ovmf $(IMAGE_NAME).hdd
|
|
||||||
qemu-system-$(KARCH) \
|
|
||||||
-M virt \
|
|
||||||
-cpu la464 \
|
|
||||||
-device ramfb \
|
|
||||||
-device qemu-xhci \
|
|
||||||
-device usb-kbd \
|
|
||||||
-device usb-mouse \
|
|
||||||
-drive if=pflash,unit=0,format=raw,file=edk2-ovmf/ovmf-code-$(KARCH).fd,readonly=on \
|
|
||||||
-hda $(IMAGE_NAME).hdd \
|
|
||||||
$(QEMUFLAGS)
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: run-bios
|
|
||||||
run-bios: $(IMAGE_NAME).iso
|
|
||||||
qemu-system-$(KARCH) \
|
|
||||||
-M q35 \
|
|
||||||
-cdrom $(IMAGE_NAME).iso \
|
|
||||||
-boot d \
|
|
||||||
$(QEMUFLAGS)
|
|
||||||
|
|
||||||
.PHONY: run-hdd-bios
|
|
||||||
run-hdd-bios: $(IMAGE_NAME).hdd
|
|
||||||
qemu-system-$(KARCH) \
|
|
||||||
-M q35 \
|
|
||||||
-hda $(IMAGE_NAME).hdd \
|
|
||||||
$(QEMUFLAGS)
|
$(QEMUFLAGS)
|
||||||
|
|
||||||
edk2-ovmf:
|
edk2-ovmf:
|
||||||
@@ -218,36 +123,10 @@ ifeq ($(KARCH),loongarch64)
|
|||||||
endif
|
endif
|
||||||
rm -rf iso_root
|
rm -rf iso_root
|
||||||
|
|
||||||
$(IMAGE_NAME).hdd: limine/limine kernel
|
|
||||||
rm -f $(IMAGE_NAME).hdd
|
|
||||||
dd if=/dev/zero bs=1M count=0 seek=64 of=$(IMAGE_NAME).hdd
|
|
||||||
sgdisk $(IMAGE_NAME).hdd -n 1:2048 -t 1:ef00
|
|
||||||
ifeq ($(KARCH),x86_64)
|
|
||||||
./limine/limine bios-install $(IMAGE_NAME).hdd
|
|
||||||
endif
|
|
||||||
mformat -i $(IMAGE_NAME).hdd@@1M
|
|
||||||
mmd -i $(IMAGE_NAME).hdd@@1M ::/EFI ::/EFI/BOOT ::/boot ::/boot/limine
|
|
||||||
mcopy -i $(IMAGE_NAME).hdd@@1M kernel/bin-$(KARCH)/kernel ::/boot
|
|
||||||
mcopy -i $(IMAGE_NAME).hdd@@1M limine.conf ::/boot/limine
|
|
||||||
ifeq ($(KARCH),x86_64)
|
|
||||||
mcopy -i $(IMAGE_NAME).hdd@@1M limine/limine-bios.sys ::/boot/limine
|
|
||||||
mcopy -i $(IMAGE_NAME).hdd@@1M limine/BOOTX64.EFI ::/EFI/BOOT
|
|
||||||
mcopy -i $(IMAGE_NAME).hdd@@1M limine/BOOTIA32.EFI ::/EFI/BOOT
|
|
||||||
endif
|
|
||||||
ifeq ($(KARCH),aarch64)
|
|
||||||
mcopy -i $(IMAGE_NAME).hdd@@1M limine/BOOTAA64.EFI ::/EFI/BOOT
|
|
||||||
endif
|
|
||||||
ifeq ($(KARCH),riscv64)
|
|
||||||
mcopy -i $(IMAGE_NAME).hdd@@1M limine/BOOTRISCV64.EFI ::/EFI/BOOT
|
|
||||||
endif
|
|
||||||
ifeq ($(KARCH),loongarch64)
|
|
||||||
mcopy -i $(IMAGE_NAME).hdd@@1M limine/BOOTLOONGARCH64.EFI ::/EFI/BOOT
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(MAKE) -C kernel clean
|
$(MAKE) -C kernel clean
|
||||||
rm -rf iso_root $(IMAGE_NAME).iso $(IMAGE_NAME).hdd
|
rm -rf iso_root $(IMAGE_NAME).iso
|
||||||
|
|
||||||
.PHONY: distclean
|
.PHONY: distclean
|
||||||
distclean: clean
|
distclean: clean
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
doomgeneric*
|
doomgeneric*
|
||||||
init
|
init
|
||||||
helloworld*
|
helloworld*
|
||||||
|
badapple*
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
export KARCH=x86_64
|
||||||
|
bash build_libxunil.sh
|
||||||
|
bash build_init.sh
|
||||||
|
bash build_doomgeneric.sh
|
||||||
|
bash build_helloworld.sh
|
||||||
|
bash build_badapple.sh
|
||||||
|
make run
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
bash build_libxunil.sh
|
||||||
|
cd user/apps/badapple
|
||||||
|
cargo build --target $KARCH-unknown-none --release --config profile.release.debug=true
|
||||||
|
cp ./target/$KARCH-unknown-none/release/badapple ../../../assets/$KARCH/badapple
|
||||||
|
cd ../../..
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
export KARCH ?= aarch64
|
export KARCH ?= x86_64
|
||||||
export OUTPUT ?= kernel
|
export OUTPUT ?= kernel
|
||||||
export MEMORY ?= 1G
|
export MEMORY ?= 4G
|
||||||
export TIMER_FREQUENCY_HZ ?= 1000
|
export TIMER_FREQUENCY_HZ ?= 1000
|
||||||
|
|||||||
+20
-4
@@ -3,15 +3,25 @@ use std::fs;
|
|||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap();
|
let arch = std::env::var("TARGET")
|
||||||
|
.unwrap_or_else(|_| {
|
||||||
|
std::env::var("CARGO_CFG_TARGET_ARCH").unwrap_or_else(|_| "x86_64".to_string())
|
||||||
|
})
|
||||||
|
.split('-')
|
||||||
|
.next()
|
||||||
|
.unwrap()
|
||||||
|
.to_string();
|
||||||
|
|
||||||
let timer_frequency_hz = env::var("TIMER_FREQUENCY_HZ").unwrap_or_else(|_| "1000".to_string());
|
let timer_frequency_hz = env::var("TIMER_FREQUENCY_HZ").unwrap_or_else(|_| "1000".to_string());
|
||||||
let karch = env::var("KARCH").unwrap_or_else(|_| "x86_64".to_string());
|
let karch = env::var("KARCH").unwrap_or_else(|_| arch.clone());
|
||||||
|
|
||||||
let out_dir = PathBuf::from("src");
|
let out_dir = PathBuf::from("src");
|
||||||
fs::write(
|
fs::write(
|
||||||
out_dir.join("config.rs"),
|
out_dir.join("config.rs"),
|
||||||
format!("pub const TIMER_FREQUENCY_HZ: usize = {timer_frequency_hz};\npub const KARCH: &str = \"{karch}\";"),
|
format!(
|
||||||
|
"pub const TIMER_FREQUENCY_HZ: usize = {timer_frequency_hz};\n\
|
||||||
|
pub const KARCH: &str = \"{karch}\";"
|
||||||
|
),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
@@ -19,7 +29,13 @@ fn main() {
|
|||||||
|
|
||||||
fs::write(
|
fs::write(
|
||||||
out_dir.join("assets.rs"),
|
out_dir.join("assets.rs"),
|
||||||
format!("pub static INIT_ELF: &[u8] = include_bytes!(\"../../../../../assets/{karch}/init\");\npub static DOOM_WAD: &[u8] = include_bytes!(\"../../../../../assets/doom1.wad\");\npub static DOOM_ELF: &[u8] = include_bytes!(\"../../../../../assets/{karch}/doomgeneric\");\npub static HELLOWORLD_ELF: &[u8] = include_bytes!(\"../../../../../assets/{karch}/helloworld.elf\");"),
|
format!(
|
||||||
|
"pub static INIT_ELF: &[u8] = include_bytes!(\"../../../../../assets/{karch}/init\");\n\
|
||||||
|
pub static DOOM_WAD: &[u8] = include_bytes!(\"../../../../../assets/doom1.wad\");\n\
|
||||||
|
pub static DOOM_ELF: &[u8] = include_bytes!(\"../../../../../assets/{karch}/doomgeneric\");\n\
|
||||||
|
pub static HELLOWORLD_ELF: &[u8] = include_bytes!(\"../../../../../assets/{karch}/helloworld.elf\");\n\
|
||||||
|
pub static BADAPPLE_ELF: &[u8] = include_bytes!(\"../../../../../assets/{karch}/badapple\");"
|
||||||
|
),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
use core::sync::atomic::Ordering;
|
use core::sync::atomic::Ordering;
|
||||||
|
|
||||||
use crate::{
|
use crate::arch::{
|
||||||
arch::{
|
aarch64::init::KERNEL_STACK,
|
||||||
aarch64::init::KERNEL_STACK,
|
arch::{HHDM_OFFSET, XunilFrameAllocator, safe_lock},
|
||||||
arch::{HHDM_OFFSET, XunilFrameAllocator, safe_lock, serial_print},
|
|
||||||
},
|
|
||||||
driver::graphics::framebuffer::USER_FB_BASE,
|
|
||||||
util::U64Buf,
|
|
||||||
};
|
};
|
||||||
use limine::{
|
use limine::{
|
||||||
memory_map::EntryType,
|
memory_map::EntryType,
|
||||||
|
|||||||
@@ -455,11 +455,6 @@ pub unsafe extern "C" fn syscall_dispatch(
|
|||||||
) -> isize {
|
) -> isize {
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
interrupts::enable();
|
interrupts::enable();
|
||||||
// if num != 1 {
|
|
||||||
// serial_print("syscall num=");
|
|
||||||
// serial_print(U64Buf::new(num as u64).as_str());
|
|
||||||
// serial_print("\n");
|
|
||||||
// }
|
|
||||||
|
|
||||||
set_reschedule(match num {
|
set_reschedule(match num {
|
||||||
BRK => false,
|
BRK => false,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use x86_64::structures::paging::{
|
|||||||
pub static ALLOCATOR: Locked<LinkedListAllocator> = Locked::new(LinkedListAllocator::new());
|
pub static ALLOCATOR: Locked<LinkedListAllocator> = Locked::new(LinkedListAllocator::new());
|
||||||
|
|
||||||
pub const HEAP_START: usize = 0xffffffff90000000;
|
pub const HEAP_START: usize = 0xffffffff90000000;
|
||||||
pub const HEAP_SIZE: usize = 4 * 1024 * 1024; // 64 MiB
|
pub const HEAP_SIZE: usize = 64 * 1024 * 1024; // 64 MiB
|
||||||
|
|
||||||
pub fn init_heap(mapper: &mut OffsetPageTable) -> Result<(), MapToError<Size4KiB>> {
|
pub fn init_heap(mapper: &mut OffsetPageTable) -> Result<(), MapToError<Size4KiB>> {
|
||||||
let page_count = HEAP_SIZE / 4096;
|
let page_count = HEAP_SIZE / 4096;
|
||||||
|
|||||||
@@ -8,7 +8,10 @@ use x86_64::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::arch::arch::{HHDM_OFFSET, XunilFrameAllocator};
|
use crate::{
|
||||||
|
arch::arch::{HHDM_OFFSET, XunilFrameAllocator, serial_print},
|
||||||
|
println,
|
||||||
|
};
|
||||||
|
|
||||||
unsafe fn active_level_4_table(mem_offset: VirtAddr) -> &'static mut PageTable {
|
unsafe fn active_level_4_table(mem_offset: VirtAddr) -> &'static mut PageTable {
|
||||||
let (level_4_table, _) = Cr3::read();
|
let (level_4_table, _) = Cr3::read();
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
pub static INIT_ELF: &[u8] = include_bytes!("../../../../../assets/aarch64/init");
|
pub static INIT_ELF: &[u8] = include_bytes!("../../../../../assets/x86_64/init");
|
||||||
pub static DOOM_WAD: &[u8] = include_bytes!("../../../../../assets/doom1.wad");
|
pub static DOOM_WAD: &[u8] = include_bytes!("../../../../../assets/doom1.wad");
|
||||||
pub static DOOM_ELF: &[u8] = include_bytes!("../../../../../assets/aarch64/doomgeneric");
|
pub static DOOM_ELF: &[u8] = include_bytes!("../../../../../assets/x86_64/doomgeneric");
|
||||||
pub static HELLOWORLD_ELF: &[u8] = include_bytes!("../../../../../assets/aarch64/helloworld.elf");
|
pub static HELLOWORLD_ELF: &[u8] = include_bytes!("../../../../../assets/x86_64/helloworld.elf");
|
||||||
|
pub static BADAPPLE_ELF: &[u8] = include_bytes!("../../../../../assets/x86_64/badapple");
|
||||||
@@ -48,6 +48,10 @@ static FILES: &[FakeFileEntry] = &[
|
|||||||
name: "helloworld.elf",
|
name: "helloworld.elf",
|
||||||
data: HELLOWORLD_ELF,
|
data: HELLOWORLD_ELF,
|
||||||
},
|
},
|
||||||
|
FakeFileEntry {
|
||||||
|
name: "badapple",
|
||||||
|
data: BADAPPLE_ELF,
|
||||||
|
},
|
||||||
FakeFileEntry {
|
FakeFileEntry {
|
||||||
name: "doomgeneric",
|
name: "doomgeneric",
|
||||||
data: DOOM_ELF,
|
data: DOOM_ELF,
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ pub struct ConsoleWriter<'a> {
|
|||||||
|
|
||||||
impl Write for ConsoleWriter<'_> {
|
impl Write for ConsoleWriter<'_> {
|
||||||
fn write_str(&mut self, s: &str) -> fmt::Result {
|
fn write_str(&mut self, s: &str) -> fmt::Result {
|
||||||
serial_print(s);
|
|
||||||
self.console.print(s, self.fb);
|
self.console.print(s, self.fb);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -31,12 +30,17 @@ impl SerialConsole {
|
|||||||
pub fn new() -> SerialConsole {
|
pub fn new() -> SerialConsole {
|
||||||
SerialConsole {
|
SerialConsole {
|
||||||
text: String::new(),
|
text: String::new(),
|
||||||
font_size: 2,
|
font_size: 1,
|
||||||
dirty: false,
|
dirty: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn print(&mut self, text: &str, fb: &mut Framebuffer) {
|
pub fn print(&mut self, text: &str, fb: &mut Framebuffer) {
|
||||||
|
if text == "\x1b[2J" {
|
||||||
|
self.text.clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let max_height = fb.height / (12 * self.font_size);
|
let max_height = fb.height / (12 * self.font_size);
|
||||||
let max_width = fb.width / (8 * self.font_size);
|
let max_width = fb.width / (8 * self.font_size);
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -180,10 +180,11 @@ pub unsafe extern "C" fn kernel_main_aarch64(mapper: &mut AArchPageTable) -> ! {
|
|||||||
init_framebuffer(&limine_framebuffer);
|
init_framebuffer(&limine_framebuffer);
|
||||||
with_framebuffer(|fb| fb.setup_aarch64());
|
with_framebuffer(|fb| fb.setup_aarch64());
|
||||||
} else {
|
} else {
|
||||||
serial_print("no framebuffers found");
|
panic!("no framebuffers found");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
panic!("no framebuffers found");
|
||||||
}
|
}
|
||||||
|
|
||||||
init_serial_console();
|
init_serial_console();
|
||||||
|
|
||||||
init_keyboard();
|
init_keyboard();
|
||||||
@@ -193,7 +194,6 @@ pub unsafe extern "C" fn kernel_main_aarch64(mapper: &mut AArchPageTable) -> ! {
|
|||||||
} else {
|
} else {
|
||||||
println!("Could not get date at boot. Will default to 0.")
|
println!("Could not get date at boot. Will default to 0.")
|
||||||
}
|
}
|
||||||
|
|
||||||
DAIF.write(DAIF::D::Masked + DAIF::A::Masked + DAIF::I::Unmasked + DAIF::F::Masked);
|
DAIF.write(DAIF::D::Masked + DAIF::A::Masked + DAIF::I::Unmasked + DAIF::F::Masked);
|
||||||
|
|
||||||
run_elf(INIT_ELF, false, true);
|
run_elf(INIT_ELF, false, true);
|
||||||
|
|||||||
+1
-1
Submodule user/libxunil updated: 6025f75ab3...e029139d65
Reference in New Issue
Block a user