Annotation of qemu/roms/openbios/arch/x86/boot.c, revision 1.1.1.1

1.1       root        1: /* tag: openbios boot command for x86
                      2:  *
                      3:  * Copyright (C) 2003-2004 Stefan Reinauer
                      4:  *
                      5:  * See the file "COPYING" for further information about
                      6:  * the copyright and warranty status of this work.
                      7:  */
                      8: 
                      9: #undef BOOTSTRAP
                     10: #include "config.h"
                     11: #include "libopenbios/bindings.h"
                     12: #include "arch/common/nvram.h"
                     13: #include "libc/diskio.h"
                     14: #include "libopenbios/sys_info.h"
                     15: #include "boot.h"
                     16: 
                     17: void go(void)
                     18: {
                     19:        ucell address, type, size;
                     20:        int image_retval = 0;
                     21: 
                     22:        /* Get the entry point and the type (see forth/debugging/client.fs) */
                     23:        feval("saved-program-state >sps.entry @");
                     24:        address = POP();
                     25:        feval("saved-program-state >sps.file-type @");
                     26:        type = POP();
                     27:        feval("saved-program-state >sps.file-size @");
                     28:        size = POP();
                     29: 
                     30:        printk("\nJumping to entry point " FMT_ucellx " for type " FMT_ucellx "...\n", address, type);
                     31: 
                     32:        switch (type) {
                     33:                case 0x0:
                     34:                        /* Start ELF boot image */
                     35:                        image_retval = start_elf(address, (uint32_t)&elf_boot_notes);
                     36:                        break;
                     37: 
                     38:                case 0x1:
                     39:                        /* Start ELF image */
                     40:                        image_retval = start_elf(address, (uint32_t)NULL);
                     41:                        break;
                     42: 
                     43:                case 0x5:
                     44:                        /* Start a.out image */
                     45:                        image_retval = start_elf(address, (uint32_t)NULL);
                     46:                        break;
                     47: 
                     48:                case 0x10:
                     49:                        /* Start Fcode image */
                     50:                        printk("Evaluating FCode...\n");
                     51:                        PUSH(address);
                     52:                        PUSH(1);
                     53:                        fword("byte-load");
                     54:                        image_retval = 0;
                     55:                        break;
                     56: 
                     57:                case 0x11:
                     58:                        /* Start Forth image */
                     59:                        PUSH(address);
                     60:                        PUSH(size);
                     61:                        fword("eval2");
                     62:                        image_retval = 0;
                     63:                        break;
                     64:        }
                     65: 
                     66:        printk("Image returned with return value %#x\n", image_retval);
                     67: }
                     68: 
                     69: 
                     70: void boot(void)
                     71: {
                     72:        /* No platform-specific boot code */
                     73:        return;
                     74: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.