Move closer to boot/. Add some debug stuff
authorweingart <weingart@openbsd.org>
Mon, 31 Mar 1997 05:52:24 +0000 (05:52 +0000)
committerweingart <weingart@openbsd.org>
Mon, 31 Mar 1997 05:52:24 +0000 (05:52 +0000)
sys/arch/i386/stand/libsa/Makefile
sys/arch/i386/stand/libsa/exec_i386.c
sys/arch/i386/stand/libsa/startprog.S

index 42b2fee..4d9b58b 100644 (file)
@@ -1,11 +1,11 @@
-#      $OpenBSD: Makefile,v 1.2 1997/03/31 03:12:08 weingart Exp $
+#      $OpenBSD: Makefile,v 1.3 1997/03/31 05:52:24 weingart Exp $
 
 
 LIB= sa
 
 CFLAGS+=-Wall
 #CFLAGS+=-DBIOS_DEBUG
-CFLAGS+=-DEXEC_DEBUG
+#CFLAGS+=-DEXEC_DEBUG
 CFLAGS+=-DNO_IDTR
 CFLAGS+=-DHEAP_START="0x10000"
 CFLAGS+=-DHEAP_LIMIT="0xa0000"
index 3a43749..f9eb127 100644 (file)
@@ -1,5 +1,5 @@
 
-/* $OpenBSD: exec_i386.c,v 1.1 1997/03/31 03:12:13 weingart Exp $ */
+/* $OpenBSD: exec_i386.c,v 1.2 1997/03/31 05:52:25 weingart Exp $ */
 
 #include <sys/param.h>
 #include <sys/exec.h>
@@ -13,9 +13,25 @@ machdep_start(startaddr, howto, loadaddr, ssym, esym)
        int howto;
 {
        static int argv[9];
-       static int (*x_entry)() = 0;
+       struct exec *x;
+
+
+#ifdef DEBUG
+       x = (void *)loadaddr;
+       printf("exec {\n");
+       printf("  a_midmag = %lx\n", x->a_midmag);
+       printf("  a_text = %lx\n", x->a_text);
+       printf("  a_data = %lx\n", x->a_data);
+       printf("  a_bss = %lx\n", x->a_bss);
+       printf("  a_syms = %lx\n", x->a_syms);
+       printf("  a_entry = %lx\n", x->a_entry);
+       printf("  a_trsize = %lx\n", x->a_trsize);
+       printf("  a_drsize = %lx\n", x->a_drsize);
+       printf("}\n");
+
+       getchar();
+#endif
 
-       x_entry = (void *)startaddr;
        (int)startaddr &= 0xffffff;
 
        /*
@@ -25,7 +41,7 @@ machdep_start(startaddr, howto, loadaddr, ssym, esym)
         *  arg0 = 8 (magic)
         *  arg1 = boot flags
         *  arg2 = boot device
-        *  arg3 = start of symbol table (0 if not loaded)
+        *  arg3 = Cylinder offset (XXX - used to be ssym)
         *  arg4 = end of symbol table (0 if not loaded)
         *  arg5 = transfer address from image
         *  arg6 = transfer address for next image pointer
@@ -34,13 +50,22 @@ machdep_start(startaddr, howto, loadaddr, ssym, esym)
         */
        argv[0] = 8;
        argv[1] = howto;
-       argv[2] = 0;            /* Boot device */
-       argv[3] = 0;            /* Cyl offset */
-       argv[4] = (int)esym;
+       argv[2] = bootdev;              /* Boot device */
+       argv[3] = 0;                    /* Cyl offset */
+       argv[4] = 0;
        argv[5] = (int)startaddr;
-       argv[6] = (int)&x_entry;
-       argv[7] = 0;
-       argv[8] = 0;
+       argv[6] = 0;
+       argv[7] = memsize(0);
+       argv[8] = memsize(1);
+
+#ifdef DEBUG
+       { int i;
+               for(i = 0; i <= argv[0]; i++)
+                       printf("argv[%d] = %x\n", i, argv[i]);
+
+               getchar();
+       }
+#endif
 
        /****************************************************************/
        /* copy that first page and overwrite any BIOS variables        */
index e1f4e26..465c8f8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: startprog.S,v 1.1 1997/03/31 03:12:17 weingart Exp $  */
+/*     $OpenBSD: startprog.S,v 1.2 1997/03/31 05:52:25 weingart Exp $  */
 
 #include <machine/asm.h>
 
@@ -32,7 +32,7 @@ ENTRY(startprog)
 
        # push on our entry address
        movl    $0x8, %ebx              # segment
-       pushw   %bx
+       pushl   %bx
        pushl   %ecx
 
        # convert over the other data segs