summaryrefslogtreecommitdiff
path: root/src/arch/amd64/fb.c
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2024-01-30 12:16:22 -0500
committerFreya Murphy <freya@freyacat.org>2024-01-30 12:17:47 -0500
commite76cbbcb327e0966fff47a645cdbc26e27a4bc8a (patch)
tree8850bb6be51e5cedb9c7ff89e047d21deec84fdf /src/arch/amd64/fb.c
parentadded backtraces (diff)
downloadcorn-e76cbbcb327e0966fff47a645cdbc26e27a4bc8a.tar.gz
corn-e76cbbcb327e0966fff47a645cdbc26e27a4bc8a.tar.bz2
corn-e76cbbcb327e0966fff47a645cdbc26e27a4bc8a.zip
make paging more stable
Diffstat (limited to 'src/arch/amd64/fb.c')
-rw-r--r--src/arch/amd64/fb.c63
1 files changed, 37 insertions, 26 deletions
diff --git a/src/arch/amd64/fb.c b/src/arch/amd64/fb.c
index 07847e5..0cd5b4f 100644
--- a/src/arch/amd64/fb.c
+++ b/src/arch/amd64/fb.c
@@ -1,11 +1,16 @@
-#include "bindings.h"
-
+#include <lib.h>
+#include <memory.h>
+#include <serial.h>
#include <stdint.h>
#include <stddef.h>
+#include "bindings.h"
+
#define INDEX 0x1CE
#define DATA 0x1CF
#define FB_ADDR 0xE0000000
+#define FB_MAX 0xFF000000
+#define FB_LEN (FB_MAX - FB_ADDR)
#define PREFERRED_VY 4096
#define PREFERRED_B 32
@@ -44,29 +49,35 @@ int fb_init(uint16_t res_x, uint16_t res_y) {
outw(INDEX, 0x04);
outw(DATA, 0x41);
- uint32_t * text_vid_mem = (uint32_t *)0xA0000;
- text_vid_mem[0] = 0xA5ADFACE;
-
- for (uintptr_t fb_offset = FB_ADDR; fb_offset < 0xFF000000; fb_offset += 0x01000000) {
- /* Enable the higher memory */
- for (uintptr_t i = fb_offset; i < fb_offset; i += 0x1000) {
- // todo ident map fb
- }
-
- /* Go find it */
- for (uintptr_t x = fb_offset; x < fb_offset + 0xFF0000; x += 0x1000) {
- if (((uintptr_t *)x)[0] == 0xA5ADFACE) {
- fb_buffer = (uint8_t *) x;
- goto mem_found;
- }
- }
- }
-
-mem_found:
-
- fb_res_x = res_x;
- fb_res_y = res_y;
- fb_res_b = PREFERRED_B;
-
+// uint32_t * text_vid_mem = (uint32_t *)0xA0000;
+// text_vid_mem[0] = 0xA5ADFACE;
+//
+// void *temp = mmap((void *) FB_ADDR, 0xFF1000);
+//
+// for (uintptr_t fb_offset = FB_ADDR; fb_offset < FB_MAX; fb_offset += 0x01000000) {
+// /* Enable the higher memory */
+// remap(temp, (void *)fb_offset, 0xFF1000);
+//
+// /* Go find it */
+// for (uintptr_t offset = 0; offset < 0xFF0000; offset += 0x1000) {
+// uintptr_t x = (uintptr_t)temp + offset;
+// if (((uintptr_t *)x)[0] == 0xA5ADFACE) {
+// fb_buffer = (uint8_t *) (fb_offset + offset);
+// goto mem_found;
+// }
+// }
+// }
+//
+// unmap(temp);
+//
+//mem_found:
+//
+// fb_res_x = res_x;
+// fb_res_y = res_y;
+// fb_res_b = PREFERRED_B;
+//
+// fb_buffer = mmap(fb_buffer, 0xFF0000);
+// memset(fb_buffer, 7, 0xFF0000);
+//
return 0;
}