Annotation of Gnu-Mach/i386/i386at/boothdr.S, revision 1.1

1.1     ! root        1: 
        !             2: #include <mach/machine/asm.h>
        !             3: 
        !             4: #include "i386asm.h"
        !             5: 
        !             6:        .text
        !             7: 
        !             8:        /* We should never be entered this way.  */
        !             9:        .globl  start,_start
        !            10: start:
        !            11: _start:
        !            12:        jmp     boot_entry
        !            13: 
        !            14:        /* MultiBoot header - see multiboot.h.  */
        !            15: #define        MULTIBOOT_MAGIC         0x1BADB002
        !            16: #ifdef __ELF__
        !            17: #define MULTIBOOT_FLAGS                0x00000002
        !            18: #else  /* __ELF__ */
        !            19: #define MULTIBOOT_FLAGS                0x00010002
        !            20: #endif /* __ELF__ */
        !            21:        P2ALIGN(2)
        !            22: boot_hdr:
        !            23:        .long   MULTIBOOT_MAGIC
        !            24:        .long   MULTIBOOT_FLAGS
        !            25:                /*
        !            26:                 * The next item here is the checksum.
        !            27:                 * XX this works OK until we need at least the 30th bit.
        !            28:                 */
        !            29:        .long   - (MULTIBOOT_MAGIC+MULTIBOOT_FLAGS)
        !            30: #ifndef __ELF__        /* a.out kludge */
        !            31:        .long   boot_hdr        /* header_addr */
        !            32:        .long   _start          /* load_addr */
        !            33:        .long   _edata          /* load_end_addr */
        !            34:        .long   _end            /* bss_end_addr */
        !            35:        .long   boot_entry      /* entry */
        !            36: #endif /* __ELF__ */
        !            37: 
        !            38: boot_entry:
        !            39: 
        !            40:        /* Switch to our own interrupt stack.  */
        !            41:        movl    $_intstack+INTSTACK_SIZE,%esp
        !            42: 
        !            43:        /* Reset EFLAGS to a known state.  */
        !            44:        pushl   $0
        !            45:        popf
        !            46: 
        !            47:        /* Clear uninitialized data.  */
        !            48:        lea     _edata,%edi
        !            49:        lea     _end,%ecx
        !            50:        subl    %edi,%ecx
        !            51:        xorl    %eax,%eax
        !            52:        rep
        !            53:        stosb
        !            54: 
        !            55:        /* Push the boot_info pointer to be the second argument.  */
        !            56:        pushl   %ebx
        !            57: 
        !            58:        /* Jump into C code.  */
        !            59:        call    EXT(c_boot_entry)
        !            60: 
        !            61:        .comm   _intstack,INTSTACK_SIZE
        !            62: 

unix.superglobalmegacorp.com

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