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

1.1       root        1: /* tag: openbios forth environment, executable code
                      2:  *
                      3:  * Copyright (C) 2003 Patrick Mauritz, Stefan Reinauer
                      4:  *
                      5:  * See the file "COPYING" for further information about
                      6:  * the copyright and warranty status of this work.
                      7:  */
                      8: 
                      9: #include "config.h"
                     10: #include "libopenbios/openbios.h"
                     11: #include "libopenbios/bindings.h"
                     12: #include "asm/types.h"
                     13: #include "dict.h"
                     14: #include "kernel/kernel.h"
                     15: #include "kernel/stack.h"
                     16: #include "libopenbios/sys_info.h"
                     17: #include "openbios.h"
                     18: #include "relocate.h"
                     19: 
                     20: void boot(void);
                     21: 
                     22: #define DICTIONARY_SIZE (256*1024)      /* 256K for the dictionary   */
                     23: static char intdict[DICTIONARY_SIZE];
                     24: 
                     25: static void init_memory(void)
                     26: {
                     27:        /* push start and end of available memory to the stack
                     28:         * so that the forth word QUIT can initialize memory
                     29:         * management. For now we use hardcoded memory between
                     30:         * 0x10000 and 0x9ffff (576k). If we need more memory
                     31:         * than that we have serious bloat.
                     32:         */
                     33: 
                     34:        PUSH(0x10000);
                     35:        PUSH(0x9FFFF);
                     36: }
                     37: 
                     38: static void
                     39: arch_init( void )
                     40: {
                     41:        void setup_timers(void);
                     42: 
                     43:        openbios_init();
                     44:        modules_init();
                     45: #ifdef CONFIG_DRIVER_IDE
                     46:        setup_timers();
                     47:        ob_ide_init("/pci/pci-ata", 0x1f0, 0x3f4, 0x170, 0x374);
                     48: #endif
                     49:        device_end();
                     50:        bind_func("platform-boot", boot );
                     51: }
                     52: 
                     53: int openbios(void)
                     54: {
                     55: #ifdef CONFIG_DEBUG_CONSOLE
                     56: #ifdef CONFIG_DEBUG_CONSOLE_SERIAL
                     57:        uart_init(CONFIG_SERIAL_PORT, CONFIG_SERIAL_SPEED);
                     58: #endif
                     59:        /* Clear the screen.  */
                     60:        cls();
                     61: #endif
                     62: 
                     63:         collect_sys_info(&sys_info);
                     64: 
                     65:        dict=intdict;
                     66:        dictlimit = DICTIONARY_SIZE;
                     67: 
                     68:        load_dictionary((char *)sys_info.dict_start,
                     69:                        sys_info.dict_end-sys_info.dict_start);
                     70:        forth_init();
                     71: 
                     72:        relocate(&sys_info);
                     73: 
                     74: #ifdef CONFIG_DEBUG_CONSOLE
                     75:        video_init();
                     76: #endif
                     77: #ifdef CONFIG_DEBUG_BOOT
                     78:        printk("forth started.\n");
                     79:        printk("initializing memory...");
                     80: #endif
                     81: 
                     82:        init_memory();
                     83: 
                     84: #ifdef CONFIG_DEBUG_BOOT
                     85:        printk("done\n");
                     86: #endif
                     87: 
                     88:        PUSH_xt( bind_noname_func(arch_init) );
                     89:        fword("PREPOST-initializer");
                     90: 
                     91:        PC = (ucell)findword("initialize-of");
                     92: 
                     93:        if (!PC) {
                     94:                printk("panic: no dictionary entry point.\n");
                     95:                return -1;
                     96:        }
                     97: #ifdef CONFIG_DEBUG_DICTIONARY
                     98:        printk("done (%d bytes).\n", dicthead);
                     99:        printk("Jumping to dictionary...\n");
                    100: #endif
                    101: 
                    102:        enterforth((xt_t)PC);
                    103: 
                    104:        return 0;
                    105: }

unix.superglobalmegacorp.com

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