Annotation of qemu/roms/openbios/libopenbios/load.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *   Creation Date: <2010/06/25 20:00:00 mcayland>
                      3:  *   Time-stamp: <2010/06/25 20:00:00 mcayland>
                      4:  *
                      5:  *     <load.c>
                      6:  *
                      7:  *     C implementation of load
                      8:  *
                      9:  *   Copyright (C) 2010 Mark Cave-Ayland ([email protected])
                     10:  *
                     11:  *   This program is free software; you can redistribute it and/or
                     12:  *   modify it under the terms of the GNU General Public License
                     13:  *   version 2
                     14:  *
                     15:  */
                     16: 
                     17: #include "config.h"
                     18: #include "kernel/kernel.h"
                     19: #include "libopenbios/bindings.h"
                     20: #include "libopenbios/sys_info.h"
                     21: #include "libopenbios/load.h"
                     22: 
                     23: #ifdef CONFIG_LOADER_ELF
                     24: #include "libopenbios/elf_load.h"
                     25: #endif
                     26: 
                     27: #ifdef CONFIG_LOADER_AOUT
                     28: #include "libopenbios/aout_load.h"
                     29: #endif
                     30: 
                     31: #ifdef CONFIG_LOADER_FCODE
                     32: #include "libopenbios/fcode_load.h"
                     33: #endif
                     34: 
                     35: #ifdef CONFIG_LOADER_FORTH
                     36: #include "libopenbios/forth_load.h"
                     37: #endif
                     38: 
                     39: 
                     40: struct sys_info sys_info;
                     41: void *elf_boot_notes = NULL;
                     42: 
                     43: void load(ihandle_t dev)
                     44: {
                     45:        /* Invoke the loaders on the specified device */
                     46:        char *param;
                     47:         ucell valid;
                     48: 
                     49: #ifdef CONFIG_LOADER_ELF
                     50: 
                     51:        /* Grab the boot arguments */
                     52:        push_str("bootargs");
                     53:        push_str("/chosen");
                     54:        fword("(find-dev)");
                     55:        POP();
                     56:        fword("get-package-property");
                     57:        POP();
                     58:        param = pop_fstr_copy();
                     59: 
                     60:        elf_load(&sys_info, dev, param, &elf_boot_notes);
                     61:         feval("state-valid @");
                     62:         valid = POP();
                     63:         if (valid) {
                     64:                 return;
                     65:         }
                     66: #endif
                     67: 
                     68: #ifdef CONFIG_LOADER_AOUT
                     69:        aout_load(&sys_info, dev);
                     70:         feval("state-valid @");
                     71:         valid = POP();
                     72:         if (valid) {
                     73:                 return;
                     74:         }
                     75: #endif
                     76: 
                     77: #ifdef CONFIG_LOADER_FCODE
                     78:        fcode_load(dev);
                     79:         feval("state-valid @");
                     80:         valid = POP();
                     81:         if (valid) {
                     82:                 return;
                     83:         }
                     84: #endif
                     85: 
                     86: #ifdef CONFIG_LOADER_FORTH
                     87:        forth_load(dev);
                     88:         feval("state-valid @");
                     89:         valid = POP();
                     90:         if (valid) {
                     91:                 return;
                     92:         }
                     93: #endif
                     94: 
                     95: }

unix.superglobalmegacorp.com

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