Annotation of Gnu-Mach/i386/i386at/boothdr.S, revision 1.1.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.