feat(lvgl): adapt LVGL for opencoreC with SSE2 SIMD blit, hardware tick, and desktop toast IPC

This commit is contained in:
RarDog
2026-09-02 21:44:55 +03:00
parent 74bfa45eea
commit e9d9b8e365
8 changed files with 196 additions and 23 deletions
+34
View File
@@ -577,12 +577,46 @@ pub extern "C" fn kernel_syscall_dispatcher(regs: &mut SyscallRegisters) {
}
regs.rax = (-1i64) as u64;
}
// SYS_NOTIFY_SEND = 25 (Post desktop notification to GUI compositor)
25 => {
let title = regs.rdi;
let body = regs.rsi;
unsafe {
if NOTIF_COUNT < 8 {
let idx = (NOTIF_HEAD + NOTIF_COUNT) % 8;
NOTIF_QUEUE[idx] = (title, body);
NOTIF_COUNT += 1;
regs.rax = 0;
return;
}
}
regs.rax = (-1i64) as u64;
}
// SYS_NOTIFY_RECV = 26 (Poll pending desktop notifications non-blockingly)
26 => {
unsafe {
if NOTIF_COUNT > 0 {
let (title, body) = NOTIF_QUEUE[NOTIF_HEAD];
NOTIF_HEAD = (NOTIF_HEAD + 1) % 8;
NOTIF_COUNT -= 1;
regs.rax = 1; // Notification available
regs.rdi = title;
regs.rsi = body;
return;
}
}
regs.rax = 0; // Queue empty
}
_ => {
regs.rax = (-1i64) as u64; // SYS_ERR_INVALID_ARG
}
}
}
static mut NOTIF_QUEUE: [(u64, u64); 8] = [(0, 0); 8];
static mut NOTIF_HEAD: usize = 0;
static mut NOTIF_COUNT: usize = 0;
#[repr(C)]
pub struct AcpiInfoPayload {
pub found: u32,
+4 -1
View File
@@ -96,8 +96,11 @@ pub unsafe fn load_elf(elf_bytes: &[u8], hhdm_offset: u64) -> Result<LoadedProce
(*vmm_ptr).map_page(pml4_paddr, page_vaddr, page_paddr, flags)
.map_err(|_| "Failed to map user ELF page")?;
// Copy data from file
// Zero the destination page first (ensures .bss is clean)
let dest = (page_paddr + hhdm_offset) as *mut u8;
core::ptr::write_bytes(dest, 0, PAGE_SIZE);
// Copy data from file if within filesz
let page_file_start = page * PAGE_SIZE;
if page_file_start < filesz {
let copy_len = core::cmp::min(PAGE_SIZE, filesz - page_file_start);