Fixes MAC addr formatting
[akaros.git] / kern / src / elf.c
index c5e1322..d8fc0df 100644 (file)
@@ -8,7 +8,7 @@
 #include <smp.h>
 #include <arch/arch.h>
 
-#ifdef KERN64
+#ifdef CONFIG_64BIT
 # define elf_field(obj, field) (elf64 ? (obj##64)->field : (obj##32)->field)
 #else
 # define elf_field(obj, field) ((obj##32)->field)
@@ -53,12 +53,18 @@ static int load_one_elf(struct proc *p, struct file *f, uintptr_t pgoffset,
                printk("[kernel] load_one_elf: ID as both 32 and 64 bit\n");
                goto fail;
        }
-       #ifndef KERN64
+       #ifndef CONFIG_64BIT
        if (elf64) {
                printk("[kernel] load_one_elf: 64 bit elf on 32 bit kernel\n");
                goto fail;
        }
        #endif
+       #ifdef CONFIG_X86_64
+       if (elf32) {
+               printk("[kernel] load_one_elf: 32 bit elf on 64 bit kernel\n");
+               goto fail;
+       }
+       #endif
 
        size_t phsz = elf64 ? sizeof(proghdr64_t) : sizeof(proghdr32_t);
        uint16_t e_phnum = elf_field(elfhdr, e_phnum);
@@ -239,9 +245,6 @@ int load_elf(struct proc* p, struct file* f)
                            {ELF_AUX_PHENT, sizeof(proghdr32_t)},
                            {ELF_AUX_PHNUM, ei.phnum},
                            {ELF_AUX_ENTRY, ei.entry},
-                           #ifdef __sparc_v8__
-                           {ELF_AUX_HWCAP, ELF_HWCAP_SPARC_FLUSH},
-                           #endif
                            {0, 0}};
 
        // put auxp after argv, envp in procinfo
@@ -256,13 +259,10 @@ int load_elf(struct proc* p, struct file* f)
        memcpy(p->procinfo->argp+auxp_pos,auxp,sizeof(auxp));
 
        uintptr_t core0_entry = ei.dynamic ? interp_ei.entry : ei.entry;
-       proc_init_trapframe(&p->env_tf,0,core0_entry,USTACKTOP);
+       proc_init_ctx(&p->scp_ctx, 0, core0_entry, USTACKTOP, 0);
        p->env_entry = ei.entry;
 
        int flags = MAP_FIXED | MAP_ANONYMOUS;
-       #ifdef __sparc_v8__
-       flags |= MAP_POPULATE; // SPARC stacks must be mapped in
-       #endif
        uintptr_t stacksz = USTACK_NUM_PAGES*PGSIZE;
        if (do_mmap(p, USTACKTOP-stacksz, stacksz, PROT_READ | PROT_WRITE,
                    flags, NULL, 0) == MAP_FAILED)