refactor: use a more decent physical memory map
[lunaix-os.git] / lunaix-os / kernel / exe / elf32 / elf32bfmt.c
index 1079b06f85d12e0437a02b9a13a447bc4ae401b6..3fb671c69b405e9a0c025c4e7daa38c5ed2c0beb 100644 (file)
@@ -1,4 +1,3 @@
-#include <lunaix/common.h>
 #include <lunaix/exebi/elf32.h>
 #include <lunaix/fs.h>
 #include <lunaix/mm/valloc.h>
@@ -32,7 +31,7 @@ elf32_open(struct elf32* elf, const char* path)
 }
 
 int
-elf32_openat(struct elf32* elf, void* elf_vfile)
+elf32_openat(struct elf32* elf, const void* elf_vfile)
 {
     int status = 0;
     elf->pheaders = NULL;
@@ -164,12 +163,19 @@ elf32_read_phdr(struct elf32* elf)
 }
 
 int
-elf32_check_exec(const struct elf32* elf)
+elf32_check_exec(const struct elf32* elf, int type)
 {
-    struct elf32_ehdr* ehdr = &elf->eheader;
+    const struct elf32_ehdr* ehdr = &elf->eheader;
+
+    return (ehdr->e_entry) && ehdr->e_type == type;
+}
+
+int
+elf32_check_arch(const struct elf32* elf)
+{
+    const struct elf32_ehdr* ehdr = &elf->eheader;
 
     return *(u32_t*)(ehdr->e_ident) == ELFMAGIC &&
            ehdr->e_ident[EI_CLASS] == ELFCLASS32 &&
-           ehdr->e_ident[EI_DATA] == ELFDATA2LSB && ehdr->e_type == ET_EXEC &&
-           ehdr->e_machine == EM_386;
-}
+           ehdr->e_ident[EI_DATA] == ELFDATA2LSB && ehdr->e_machine == EM_386;
+}
\ No newline at end of file