mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
fb: map as WC
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#define _TERM_H
|
||||
|
||||
void term_init();
|
||||
void term_update_framebuffer(void *fb);
|
||||
void term_putchar(char c);
|
||||
void term_write(char *str, size_t count);
|
||||
void term_getsize(size_t *x, size_t *y, size_t *fbx, size_t *fby);
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#define ARCH_MMU_FLAGS_WB 0
|
||||
#define ARCH_MMU_FLAGS_WT (1 << 3)
|
||||
#define ARCH_MMU_FLAGS_UC (1 << 4)
|
||||
#define ARCH_MMU_FLAGS_WC ((1 << 12) | (1 << 3)) // PAT5 (limine sets up the 5th PAT entry as WC)
|
||||
|
||||
#define ARCH_MMU_REQUIRED_FLAGS ARCH_MMU_FLAGS_READ
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <arch/cpu.h>
|
||||
#include <kernel/pmm.h>
|
||||
#include <kernel/usercopy.h>
|
||||
#include <kernel/term.h>
|
||||
#include <kernel/init.h>
|
||||
|
||||
typedef struct bitfield_t {
|
||||
@@ -256,6 +257,11 @@ void fb_init() {
|
||||
|
||||
printf("%s: %dx%d %d bpp\n", name, fb->width, fb->height, fb->bpp);
|
||||
}
|
||||
|
||||
|
||||
void *fb_map = vmm_map(NULL, fbs[0]->pitch * fbs[0]->height, VMM_FLAGS_PHYSICAL, ARCH_MMU_FLAGS_READ | ARCH_MMU_FLAGS_WRITE | ARCH_MMU_FLAGS_NOEXEC | ARCH_MMU_FLAGS_WC, FROM_HHDM(fbs[0]->address));
|
||||
__assert(fb_map);
|
||||
term_update_framebuffer(fb_map);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(fb, INIT_ROUTINE_FLAGS_NONE, fb_init, devfs);
|
||||
|
||||
@@ -71,4 +71,8 @@ void term_init() {
|
||||
logging_sethook(term_putchar);
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(term, INIT_ROUTINE_FLAGS_NONE, term_init, pmm);
|
||||
void term_update_framebuffer(void *fb) {
|
||||
((struct flanterm_fb_context *)fb)->framebuffer = fb;
|
||||
}
|
||||
|
||||
INIT_ROUTINE_DEFINE(term, INIT_ROUTINE_FLAGS_NONE, term_init, vmm);
|
||||
|
||||
Reference in New Issue
Block a user