Annotation of Net2/arch/i386/netboot/asm.h, revision 1.1.1.1

1.1       root        1: /* netboot
                      2:  *
                      3:  * asm.h,v
                      4:  * Revision 1.1  1993/07/08  16:03:49  brezak
                      5:  * Diskless boot prom code from Jim McKim ([email protected])
                      6:  *
                      7:  * Revision 1.1.1.1  1993/05/28  11:41:07  mckim
                      8:  * Initial version.
                      9:  *
                     10:  *
                     11:  * source in this file came from
                     12:  * the 386BSD boot blocks written by Julian Elsicher.
                     13:  * 
                     14:  * Ported to Boot 386BSD by Julian Elsicher ([email protected]) Sept. 1992
                     15:  *
                     16:  * Mach Operating System
                     17:  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
                     18:  * All Rights Reserved.
                     19:  * 
                     20:  * Permission to use, copy, modify and distribute this software and its
                     21:  * documentation is hereby granted, provided that both the copyright
                     22:  * notice and this permission notice appear in all copies of the
                     23:  * software, derivative works or modified versions, and any portions
                     24:  * thereof, and that both notices appear in supporting documentation.
                     25:  * 
                     26:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
                     27:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
                     28:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     29:  * 
                     30:  * Carnegie Mellon requests users of this software to return to
                     31:  * 
                     32:  *  Software Distribution Coordinator  or  [email protected]
                     33:  *  School of Computer Science
                     34:  *  Carnegie Mellon University
                     35:  *  Pittsburgh PA 15213-3890
                     36:  * 
                     37:  * any improvements or extensions that they make and grant Carnegie Mellon
                     38:  * the rights to redistribute these changes.
                     39:  */
                     40: 
                     41: #define S_ARG0  4(%esp)
                     42: #define S_ARG1  8(%esp)
                     43: #define S_ARG2 12(%esp)
                     44: #define S_ARG3 16(%esp)
                     45: 
                     46: #define FRAME  pushl %ebp; movl %esp, %ebp
                     47: #define EMARF  leave
                     48: 
                     49: #define B_ARG0  8(%ebp)
                     50: #define B_ARG1 12(%ebp)
                     51: #define B_ARG2 16(%ebp)
                     52: #define B_ARG3 20(%ebp)
                     53: 
                     54: #ifdef wheeze
                     55: 
                     56: #define ALIGN 4
                     57: #define EXT(x) x
                     58: #define LEXT(x) x:
                     59: #define LCL(x) ./**/x
                     60: 
                     61: #define LB(x,n) ./**/x
                     62: #define LBb(x,n) ./**/x
                     63: #define LBf(x,n) ./**/x
                     64: 
                     65: #define        SVC lcall $7,$0
                     66: 
                     67: #define String .string
                     68: #define Value  .value
                     69: #define Times(a,b) [a\*b]
                     70: #define Divide(a,b) [a\\b]
                     71: 
                     72: #define INB    inb     (%dx)
                     73: #define OUTB   outb    (%dx)
                     74: #define INL    inl     (%dx)
                     75: #define OUTL   outl    (%dx)
                     76: 
                     77: #else  wheeze
                     78: /* #define ALIGN */
                     79: #define ALIGN 4
                     80: #define        LCL(x)  x
                     81: 
                     82: #define LB(x,n) n
                     83: #ifdef __STDC__
                     84: #define EXT(x) _ ## x
                     85: #define LEXT(x) _ ## x ## :
                     86: 
                     87: #define LBb(x,n) n ## b
                     88: #define LBf(x,n) n ## f
                     89: #else __STDC__
                     90: #define EXT(x) _/**/x
                     91: #define LEXT(x) _/**/x/**/:
                     92: #define LBb(x,n) n/**/b
                     93: #define LBf(x,n) n/**/f
                     94: #endif __STDC__
                     95: #define SVC .byte 0x9a; .long 0; .word 0x7
                     96: 
                     97: #define String .ascii
                     98: #define Value  .word
                     99: #define Times(a,b) (a*b)
                    100: #define Divide(a,b) (a/b)
                    101: 
                    102: #define INB    inb     %dx, %al
                    103: #define OUTB   outb    %al, %dx
                    104: #define INL    inl     %dx, %eax
                    105: #define OUTL   outl    %eax, %dx
                    106: 
                    107: #endif wheeze
                    108: 
                    109: #define data32 .byte 0x66
                    110: #define data16 .byte 0x66
                    111: #define addr16 .byte 0x67
                    112: 
                    113: 
                    114: 
                    115: #ifdef GPROF
                    116: #ifdef __STDC__
                    117: 
                    118: #define MCOUNT         .data; LB(x, 9); .long 0; .text; lea LBb(x, 9),%edx; call mcount
                    119: #define        ENTRY(x)        .globl EXT(x); .align ALIGN; LEXT(x) ; \
                    120:                        pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;
                    121: #define        ENTRY2(x,y)     .globl EXT(x); .globl EXT(y); \
                    122:                        .align ALIGN; LEXT(x) LEXT(y) ; \
                    123:                        pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;
                    124: #define        ASENTRY(x)      .globl x; .align ALIGN; x ## : ; \
                    125:                        pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;
                    126: 
                    127: #else   __STDC__
                    128: 
                    129: #define MCOUNT         .data; LB(x, 9): .long 0; .text; lea LBb(x, 9),%edx; call mcount
                    130: #define        ENTRY(x)        .globl EXT(x); .align ALIGN; LEXT(x) ; \
                    131:                        pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;
                    132: #define        ENTRY2(x,y)     .globl EXT(x); .globl EXT(y); \
                    133:                        .align ALIGN; LEXT(x) LEXT(y)
                    134: #define        ASENTRY(x)      .globl x; .align ALIGN; x: ; \
                    135:                        pushl %ebp; movl %esp, %ebp; MCOUNT; popl %ebp;
                    136: 
                    137: #endif __STDC__
                    138: #else  GPROF
                    139: #ifdef __STDC__
                    140: 
                    141: #define MCOUNT
                    142: #define        ENTRY(x)        .globl EXT(x); .align ALIGN; LEXT(x)
                    143: #define        ENTRY2(x,y)     .globl EXT(x); .globl EXT(y); \
                    144:                        .align ALIGN; LEXT(x) LEXT(y)
                    145: #define        ASENTRY(x)      .globl x; .align ALIGN; x ## :
                    146: 
                    147: #else  __STDC__
                    148: 
                    149: #define MCOUNT
                    150: #define        ENTRY(x)        .globl EXT(x); .align ALIGN; LEXT(x)
                    151: #define        ENTRY2(x,y)     .globl EXT(x); .globl EXT(y); \
                    152:                        .align ALIGN; LEXT(x) LEXT(y)
                    153: #define        ASENTRY(x)      .globl x; .align ALIGN; x:
                    154: 
                    155: #endif __STDC__
                    156: #endif GPROF
                    157: 
                    158: #define        Entry(x)        .globl EXT(x); .align ALIGN; LEXT(x)
                    159: #define        DATA(x)         .globl EXT(x); .align ALIGN; LEXT(x)
                    160: 
                    161: CR0_PE         =       0x00000001
                    162: 
                    163: KERN_CODE_SEG  =       0x08
                    164: KERN_DATA_SEG  =       0x10
                    165: BOOT_16_SEG    =       0x18
                    166: 
                    167: #define opsize .byte 0x66
                    168: #define addrsize .byte 0x67

unix.superglobalmegacorp.com

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