summaryrefslogtreecommitdiff
path: root/src/kmain.c
blob: a1a7e7cd3221f82312af0edf548023a9822cd3d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "acpi.h"
#include <memory.h>
#include <lib.h>
#include <serial.h>
#include <fb.h>
#include <shim.h>

void print_memory() {
	size_t WIDTH = 64;

	for(size_t i = 0;; i += WIDTH) {
		char buf[20];
		ultoa(i, buf, 16);
		serial_out_str("0x");
		for(size_t k = 0; k < 6 - strlen(buf); k++) {
			serial_out('0');
		}
		serial_out_str(buf);
		serial_out_str(": ");
		for(size_t j = 0; j < WIDTH; j++) {
			char x = *(char *)(i + j);
			if(x < 0x20 || x >= 0x7f) {
				serial_out('.');
			} else {
				serial_out(x);
			}
		}
		serial_out('\n');
	}
}

void kmain(struct boot_info *info) {
	memory_init(info->map);

	int i = acpi_init(info->acpi_table);
	char buf[20];
	ltoa(i, buf, 10);
	serial_out_str("acpi: ");
	serial_out_str(buf);
	serial_out_str("\n");

	serial_out_str("entered kmain\n");
	*(char*)(0xB8000 + 0x144) = 'h';
	*(char*)(0xB8000 + 0x146) = 'i';
	//fb_init(1024, 768);
	acpi_shutdown();
	while (1) {
		// loop so we dont halt
		// this allows interrupts to fire
	}
}