Annotation of qemu/roms/openbios/arch/amd64/openbios.c, revision 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.