Annotation of qemu/roms/openbios/include/arch/sparc32/a.out.h, revision 1.1.1.1

1.1       root        1: /* $Id: a.out.h,v 1.13 2000/01/09 10:46:53 anton Exp $ */
                      2: #ifndef __SPARC_A_OUT_H__
                      3: #define __SPARC_A_OUT_H__
                      4: 
                      5: #define SPARC_PGSIZE    0x2000        /* Thanks to the sun4 architecture... */
                      6: #define SEGMENT_SIZE    SPARC_PGSIZE  /* whee... */
                      7: 
                      8: struct exec {
                      9:        unsigned char a_dynamic:1;      /* A __DYNAMIC is in this image */
                     10:        unsigned char a_toolversion:7;
                     11:        unsigned char a_machtype;
                     12:        unsigned short a_info;
                     13:        unsigned long a_text;           /* length of text, in bytes */
                     14:        unsigned long a_data;           /* length of data, in bytes */
                     15:        unsigned long a_bss;            /* length of bss, in bytes */
                     16:        unsigned long a_syms;           /* length of symbol table, in bytes */
                     17:        unsigned long a_entry;          /* where program begins */
                     18:        unsigned long a_trsize;
                     19:        unsigned long a_drsize;
                     20: };
                     21: 
                     22: /* Where in the file does the text information begin? */
                     23: #define N_TXTOFF(x)     (N_MAGIC(x) == ZMAGIC ? 0 : sizeof (struct exec))
                     24: 
                     25: /* Where do the Symbols start? */
                     26: #define N_SYMOFF(x)     (N_TXTOFF(x) + (x).a_text +   \
                     27:                          (x).a_data + (x).a_trsize +  \
                     28:                          (x).a_drsize)
                     29: 
                     30: /* Where does text segment go in memory after being loaded? */
                     31: #define N_TXTADDR(x)    (((N_MAGIC(x) == ZMAGIC) &&        \
                     32:                         ((x).a_entry < SPARC_PGSIZE)) ?   \
                     33:                           0 : SPARC_PGSIZE)
                     34: 
                     35: /* And same for the data segment.. */
                     36: #define N_DATADDR(x) (N_MAGIC(x)==OMAGIC ?         \
                     37:                       (N_TXTADDR(x) + (x).a_text)  \
                     38:                        : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
                     39: 
                     40: #define N_TRSIZE(a)    ((a).a_trsize)
                     41: #define N_DRSIZE(a)    ((a).a_drsize)
                     42: #define N_SYMSIZE(a)   ((a).a_syms)
                     43: 
                     44: /*
                     45:  * Sparc relocation types
                     46:  */
                     47: enum reloc_type
                     48: {
                     49:        RELOC_8,
                     50:        RELOC_16,
                     51:        RELOC_32,       /* simplest relocs */
                     52:        RELOC_DISP8,
                     53:        RELOC_DISP16,
                     54:        RELOC_DISP32,   /* Disp's (pc-rel) */
                     55:        RELOC_WDISP30,
                     56:        RELOC_WDISP22,  /* SR word disp's */
                     57:        RELOC_HI22,
                     58:        RELOC_22,       /* SR 22-bit relocs */
                     59:        RELOC_13,
                     60:        RELOC_LO10,     /* SR 13&10-bit relocs */
                     61:        RELOC_SFA_BASE,
                     62:        RELOC_SFA_OFF13, /* SR S.F.A. relocs */
                     63:        RELOC_BASE10,
                     64:        RELOC_BASE13,
                     65:        RELOC_BASE22,   /* base_relative pic */
                     66:        RELOC_PC10,
                     67:        RELOC_PC22,     /* special pc-rel pic */
                     68:        RELOC_JMP_TBL,  /* jmp_tbl_rel in pic */
                     69:        RELOC_SEGOFF16, /* ShLib offset-in-seg */
                     70:        RELOC_GLOB_DAT,
                     71:        RELOC_JMP_SLOT,
                     72:        RELOC_RELATIVE  /* rtld relocs */
                     73: };
                     74: 
                     75: /*
                     76:  * Format of a relocation datum.
                     77:  */
                     78: struct relocation_info /* used when header.a_machtype == M_SPARC */
                     79: {
                     80:         unsigned long   r_address;  /* relocation addr */
                     81:         unsigned int    r_index:24; /* segment index or symbol index */
                     82:         unsigned int    r_extern:1; /* if F, r_index==SEG#; if T, SYM idx */
                     83:         int             r_pad:2;    /* <unused> */
                     84:         enum reloc_type r_type:5;   /* type of relocation to perform */
                     85:         long            r_addend;   /* addend for relocation value */
                     86: };
                     87: 
                     88: #define N_RELOCATION_INFO_DECLARED 1
                     89: 
                     90: #ifdef __KERNEL__
                     91: 
                     92: #include <asm/page.h>
                     93: 
                     94: #define STACK_TOP      (PAGE_OFFSET - PAGE_SIZE)
                     95: 
                     96: #endif /* __KERNEL__ */
                     97: 
                     98: #endif /* __SPARC_A_OUT_H__ */

unix.superglobalmegacorp.com

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