summaryrefslogtreecommitdiff
path: root/src/kernel/libs/acpi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/libs/acpi.c')
-rw-r--r--src/kernel/libs/acpi.c58
1 files changed, 0 insertions, 58 deletions
diff --git a/src/kernel/libs/acpi.c b/src/kernel/libs/acpi.c
deleted file mode 100644
index 0c22fe4..0000000
--- a/src/kernel/libs/acpi.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <acpi.h>
-#include <stdint.h>
-#include <printf.h>
-
-static int RSDP_verify(void *rsdp_pointer) {
- printf("Verifying potential RSDP at address 0x%p... ", rsdp_pointer);
- union rsdp_t *rsdp = rsdp_pointer;
- uint8_t checksum = 0;
- char *rsdp_csm_ptr = rsdp_pointer;
- int i;
- if(checksum) return 0;
- if(rsdp->v1.version) {
- printf("APCI revision > 2.\n");
- checksum = 0;
- printf("len : %i\n", rsdp->v2.len);
- for(i = 0; i < rsdp->v2.len; i++) {
- checksum += rsdp_csm_ptr[i];
- }
- }
- else {
- printf("APCI revision 1.\n");
- for(i = 0; i <= 20; i++) {
- checksum += rsdp_csm_ptr[i];
- }
- }
- if(checksum) {
- return 0;
- printf("Invalid, searching on.\n");
- }
- printf("RSDP Verified!\n");
- return 1;
-}
-
-rsdp_t *find_RSDP() {
- const char sig[9] = "RSD PTR ";
- uintptr_t *p = (void *)0x040e;
- uintptr_t *ebda_unshifted = (void *)p;
-
- void *ebda = (void *)((uintptr_t)ebda_unshifted << (uintptr_t)4 & (uintptr_t)0xfffff);
-
- for(void *i = ebda; i <= ebda + 64000; i += 16) {
- if(!(memcmp(sig, i, 8))) {
- if(RSDP_verify(i)) {
- return(i);
- }
- }
- }
-
- for(void *i = (void *)0xe0000; i <= (void *)0xfffff; i += 16) {
- if(!(memcmp(sig, i, 8))) {
- if(RSDP_verify(i)) {
- return(i);
- }
- }
- }
-}
-
-