Annotation of gcc/config/rs6000/sysv4.h, revision 1.1.1.1

1.1       root        1: /* Target definitions for GNU compiler for PowerPC running System V.4
                      2:    Copyright (C) 1995, Free Software Foundation, Inc.
                      3:    Contributed by Cygnus Support.
                      4: 
                      5: This file is part of GNU CC.
                      6: 
                      7: GNU CC is free software; you can redistribute it and/or modify
                      8: it under the terms of the GNU General Public License as published by
                      9: the Free Software Foundation; either version 2, or (at your option)
                     10: any later version.
                     11: 
                     12: GNU CC is distributed in the hope that it will be useful,
                     13: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     15: GNU General Public License for more details.
                     16: 
                     17: You should have received a copy of the GNU General Public License
                     18: along with GNU CC; see the file COPYING.  If not, write to
                     19: the Free Software Foundation, 59 Temple Place - Suite 330,
                     20: Boston, MA 02111-1307, USA.  */
                     21: 
                     22: /* eABI local switches -- put here rather than eabi.h, so the switches
                     23:    can be tested in macros.  */
                     24: 
                     25: #define        MASK_NO_BITFIELD_TYPE   0x40000000      /* Set PCC_BITFIELD_TYPE_MATTERS to 0 */
                     26: #define        MASK_STRICT_ALIGN       0x20000000      /* Set STRICT_ALIGNMENT to 1.  */
                     27: #define MASK_RELOCATABLE       0x10000000      /* GOT pointers are PC relative */
                     28: #define        MASK_NO_TRACEBACK       0x08000000      /* eliminate traceback words */
                     29: #define MASK_LITTLE_ENDIAN     0x04000000      /* target is little endian */
                     30: #define MASK_AIX_CALLS         0x02000000      /* Use AIX calling sequence */
                     31: #define MASK_PROTOTYPE         0x01000000      /* Only prototyped fcns pass variable args */
                     32: 
                     33: #define        TARGET_NO_BITFIELD_TYPE (target_flags & MASK_NO_BITFIELD_TYPE)
                     34: #define TARGET_STRICT_ALIGN    (target_flags & MASK_STRICT_ALIGN)
                     35: #define TARGET_RELOCATABLE     (target_flags & MASK_RELOCATABLE)
                     36: #define TARGET_NO_TRACEBACK    (target_flags & MASK_NO_TRACEBACK)
                     37: #define TARGET_LITTLE_ENDIAN   (target_flags & MASK_LITTLE_ENDIAN)
                     38: #define TARGET_AIX_CALLS       (target_flags & MASK_AIX_CALLS)
                     39: #define        TARGET_PROTOTYPE        (target_flags & MASK_PROTOTYPE)
                     40: #define        TARGET_TOC              (target_flags & (MASK_64BIT             \
                     41:                                                 | MASK_RELOCATABLE     \
                     42:                                                 | MASK_MINIMAL_TOC))
                     43: 
                     44: #define        TARGET_BITFIELD_TYPE    (! TARGET_NO_BITFIELD_TYPE)
                     45: #define        TARGET_TRACEBACK        (! TARGET_NO_TRACEBACK)
                     46: #define TARGET_BIG_ENDIAN      (! TARGET_LITTLE_ENDIAN)
                     47: #define TARGET_NO_AIX_CALLS    (! TARGET_AIX_CALLS)
                     48: #define        TARGET_NO_PROTOTYPE     (! TARGET_PROTOTYPE)
                     49: #define        TARGET_NO_TOC           (! TARGET_TOC)
                     50: 
                     51: #define TARGET_V4_CALLS                TARGET_NO_AIX_CALLS
                     52: 
                     53: /* Pseudo target to indicate whether the object format is ELF
                     54:    (to get around not having conditional compilation in the md file)  */
                     55: #define        TARGET_ELF              1
                     56: 
                     57: /* Note, V.4 no longer uses a normal TOC, so make -mfull-toc, be just
                     58:    the same as -mminimal-toc.  */
                     59: #undef SUBTARGET_SWITCHES
                     60: #define SUBTARGET_SWITCHES                                             \
                     61:   { "bit-align",       -MASK_NO_BITFIELD_TYPE },                       \
                     62:   { "no-bit-align",     MASK_NO_BITFIELD_TYPE },                       \
                     63:   { "strict-align",     MASK_STRICT_ALIGN },                           \
                     64:   { "no-strict-align", -MASK_STRICT_ALIGN },                           \
                     65:   { "relocatable",      MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC }, \
                     66:   { "no-relocatable",  -MASK_RELOCATABLE },                            \
                     67:   { "traceback",       -MASK_NO_TRACEBACK },                           \
                     68:   { "no-traceback",     MASK_NO_TRACEBACK },                           \
                     69:   { "little-endian",    MASK_LITTLE_ENDIAN },                          \
                     70:   { "little",           MASK_LITTLE_ENDIAN },                          \
                     71:   { "big-endian",      -MASK_LITTLE_ENDIAN },                          \
                     72:   { "big",             -MASK_LITTLE_ENDIAN },                          \
                     73:   { "no-toc",           0 },                                           \
                     74:   { "toc",              MASK_MINIMAL_TOC },                            \
                     75:   { "full-toc",                 MASK_MINIMAL_TOC },                            \
                     76:   { "call-aix",                 MASK_AIX_CALLS },                              \
                     77:   { "call-sysv",       -MASK_AIX_CALLS },                              \
                     78:   { "prototype",        MASK_PROTOTYPE },                              \
                     79:   { "no-prototype",    -MASK_PROTOTYPE },
                     80: 
                     81: /* Sometimes certain combinations of command options do not make sense
                     82:    on a particular target machine.  You can define a macro
                     83:    `OVERRIDE_OPTIONS' to take account of this.  This macro, if
                     84:    defined, is executed once just after all the command options have
                     85:    been parsed.
                     86: 
                     87:    The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to
                     88:    get control.  */
                     89: 
                     90: #define SUBTARGET_OVERRIDE_OPTIONS                                     \
                     91: do {                                                                   \
                     92:   if (TARGET_RELOCATABLE && !TARGET_MINIMAL_TOC)                       \
                     93:     {                                                                  \
                     94:       target_flags |= MASK_MINIMAL_TOC;                                        \
                     95:       error ("-mrelocatable and -mno-minimal-toc are incompatible.");  \
                     96:     }                                                                  \
                     97: } while (0)
                     98: 
                     99: #include "rs6000/powerpc.h"
                    100: 
                    101: /* System V.4 uses register 13 as a pointer to the small data area,
                    102:    so it is not available to the normal user.  */
                    103: 
                    104: #undef FIXED_R13
                    105: #define FIXED_R13 1
                    106: 
                    107: /* System V.4 passes the first 8 floating arguments in registers,
                    108:    instead of the first 13 like AIX does.  */
                    109: #undef FP_ARG_MAX_REG
                    110: #define        FP_ARG_AIX_MAX_REG      45
                    111: #define        FP_ARG_V4_MAX_REG       40
                    112: #define        FP_ARG_MAX_REG ((TARGET_AIX_CALLS) ? FP_ARG_AIX_MAX_REG : FP_ARG_V4_MAX_REG)
                    113: 
                    114: /* Size of the V.4 varargs area if needed */
                    115: #undef RS6000_VARARGS_AREA
                    116: #define RS6000_VARARGS_AREA ((rs6000_sysv_varargs_p) ? RS6000_VARARGS_SIZE : 0)
                    117: 
                    118: /* Override default big endianism */
                    119: #undef  BYTES_BIG_ENDIAN
                    120: #undef  WORDS_BIG_ENDIAN
                    121: #define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN)
                    122: #define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN)
                    123: 
                    124: /* Define this to set the endianness to use in libgcc2.c, which can
                    125:    not depend on target_flags.  */
                    126: #ifndef _LITTLE_ENDIAN
                    127: #define LIBGCC2_WORDS_BIG_ENDIAN 1
                    128: #else
                    129: #define LIBGCC2_WORDS_BIG_ENDIAN 0
                    130: #endif
                    131: 
                    132: /* Size of the outgoing register save area */
                    133: #undef RS6000_REG_SAVE
                    134: #define RS6000_REG_SAVE (TARGET_AIX_CALLS ? (TARGET_64BIT ? 64 : 32) : 0)
                    135: 
                    136: /* Size of the fixed area on the stack.  For AIX, use the standard 6 word
                    137:    area, otherwise use 2 words to store back chain & LR.  */
                    138: #undef RS6000_SAVE_AREA
                    139: #define RS6000_SAVE_AREA \
                    140:   ((TARGET_AIX_CALLS ? 24 : 8) << (TARGET_64BIT ? 1 : 0))
                    141: 
                    142: /* Define cutoff for using external functions to save floating point.
                    143:    Currently on V.4, always use inline stores */
                    144: #undef FP_SAVE_INLINE
                    145: #define FP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) < 64)
                    146: 
                    147: /* Don't generate XCOFF debugging information.  */
                    148: 
                    149: #undef XCOFF_DEBUGGING_INFO
                    150: 
                    151: /* Don't use the COFF object file format.  */
                    152: 
                    153: #undef OBJECT_FORMAT_COFF
                    154: 
                    155: /* The XCOFF support uses weird symbol suffixes, which we don't want
                    156:    for ELF.  */
                    157: 
                    158: #undef RS6000_OUTPUT_BASENAME
                    159: #define RS6000_OUTPUT_BASENAME(FILE, NAME) assemble_name (FILE, NAME)
                    160: 
                    161: /* Don't bother to output .extern pseudo-ops.  They are not needed by
                    162:    ELF assemblers.  */
                    163: 
                    164: #undef ASM_OUTPUT_EXTERNAL
                    165: 
                    166: /* Undefine some things which are defined by the generic svr4.h.  */
                    167: 
                    168: #undef ASM_FILE_END
                    169: #undef ASM_OUTPUT_EXTERNAL_LIBCALL
                    170: #undef READONLY_DATA_SECTION
                    171: #undef SELECT_SECTION
                    172: #undef ASM_DECLARE_FUNCTION_NAME
                    173: #undef ASM_OUTPUT_CONSTRUCTOR
                    174: #undef ASM_OUTPUT_DESTRUCTOR
                    175: 
                    176: /* Use the regular svr4 definitions.  */
                    177: 
                    178: #include "svr4.h"
                    179: 
                    180: /* Prefix and suffix to use to saving floating point */
                    181: #undef SAVE_FP_PREFIX
                    182: #undef SAVE_FP_SUFFIX
                    183: #define        SAVE_FP_PREFIX "_savefpr_"
                    184: #define SAVE_FP_SUFFIX "_l"
                    185: 
                    186: /* Prefix and suffix to use to restoring floating point */
                    187: #undef RESTORE_FP_PREFIX
                    188: #undef RESTORE_FP_SUFFIX
                    189: #define        RESTORE_FP_PREFIX "_restfpr_"
                    190: #define RESTORE_FP_SUFFIX "_l"
                    191: 
                    192: /* Type used for ptrdiff_t, as a string used in a declaration.  */
                    193: #undef PTRDIFF_TYPE
                    194: #define PTRDIFF_TYPE "int"
                    195: 
                    196: /* Type used for wchar_t, as a string used in a declaration.  */
                    197: #undef WCHAR_TYPE
                    198: #define WCHAR_TYPE "short unsigned int"
                    199: 
                    200: /* Width of wchar_t in bits.  */
                    201: #undef WCHAR_TYPE_SIZE
                    202: #define WCHAR_TYPE_SIZE 16
                    203: 
                    204: /* Align stack to 16 byte boundaries */
                    205: #undef STACK_BOUNDARY
                    206: #define        STACK_BOUNDARY  128
                    207: 
                    208: /* No data type wants to be aligned rounder than this.  */
                    209: #undef BIGGEST_ALIGNMENT
                    210: #define BIGGEST_ALIGNMENT 128
                    211: 
                    212: /* Use ELF style section commands.  */
                    213: 
                    214: #undef TEXT_SECTION_ASM_OP
                    215: #define TEXT_SECTION_ASM_OP    "\t.section\t\".text\""
                    216: 
                    217: #undef DATA_SECTION_ASM_OP
                    218: #define DATA_SECTION_ASM_OP    "\t.section\t\".data\""
                    219: 
                    220: /* Besides the usual ELF sections, we need a toc section.  */
                    221: #undef EXTRA_SECTIONS
                    222: #define EXTRA_SECTIONS in_const, in_ctors, in_dtors, in_toc
                    223: 
                    224: #undef EXTRA_SECTION_FUNCTIONS
                    225: #define EXTRA_SECTION_FUNCTIONS                                                \
                    226:   CONST_SECTION_FUNCTION                                               \
                    227:   CTORS_SECTION_FUNCTION                                               \
                    228:   DTORS_SECTION_FUNCTION                                               \
                    229:   TOC_SECTION_FUNCTION
                    230: 
                    231: #define TOC_SECTION_FUNCTION                                           \
                    232: void                                                                   \
                    233: toc_section ()                                                         \
                    234: {                                                                      \
                    235:   static int toc_initialized = 0;                                      \
                    236:                                                                        \
                    237:   if (in_section != in_toc)                                            \
                    238:     {                                                                  \
                    239:       in_section = in_toc;                                             \
                    240:       fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP);      \
                    241:       if (! toc_initialized)                                           \
                    242:        {                                                               \
                    243:          ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1");    \
                    244:          fprintf (asm_out_file, " = .+32768\n");                       \
                    245:          toc_initialized = 1;                                          \
                    246:        }                                                               \
                    247:     }                                                                  \
                    248: }
                    249: 
                    250: #define TOC_SECTION_ASM_OP "\t.section\t\".got\",\"aw\""
                    251: #define MINIMAL_TOC_SECTION_ASM_OP "\t.section\t\".got1\",\"aw\""
                    252: 
                    253: /* Use the TOC section for TOC entries.  */
                    254: 
                    255: #undef SELECT_RTX_SECTION
                    256: #define SELECT_RTX_SECTION(MODE, X)            \
                    257: { if (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (X))     \
                    258:     toc_section ();                            \
                    259:   else                                         \
                    260:     const_section ();                          \
                    261: }
                    262: 
                    263: /* These macros generate the special .type and .size directives which
                    264:    are used to set the corresponding fields of the linker symbol table
                    265:    entries in an ELF object file under SVR4.  These macros also output
                    266:    the starting labels for the relevant functions/objects.  */
                    267: 
                    268: /* Write the extra assembler code needed to declare a function properly.
                    269:    Some svr4 assemblers need to also have something extra said about the
                    270:    function's return value.  We allow for that here.  */
                    271: 
                    272: extern void svr4_traceback ();
                    273: extern int rs6000_pic_labelno;
                    274: 
                    275: #undef ASM_DECLARE_FUNCTION_NAME
                    276: #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)                    \
                    277:   do {                                                                 \
                    278:     if (TARGET_RELOCATABLE && get_pool_size () != 0)                   \
                    279:       {                                                                        \
                    280:        char buf[256];                                                  \
                    281:                                                                        \
                    282:        ASM_OUTPUT_INTERNAL_LABEL (FILE, "LCL", rs6000_pic_labelno);    \
                    283:                                                                        \
                    284:        ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1);                  \
                    285:        fprintf (FILE, (TARGET_POWERPC64) ? "\t.quad " : "\t.long ");   \
                    286:        assemble_name (FILE, buf);                                      \
                    287:        putc ('-', FILE);                                               \
                    288:                                                                        \
                    289:        ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);   \
                    290:        assemble_name (FILE, buf);                                      \
                    291:        putc ('\n', FILE);                                              \
                    292:       }                                                                        \
                    293:                                                                        \
                    294:     fprintf (FILE, "\t%s\t ", TYPE_ASM_OP);                            \
                    295:     assemble_name (FILE, NAME);                                                \
                    296:     putc (',', FILE);                                                  \
                    297:     fprintf (FILE, TYPE_OPERAND_FMT, "function");                      \
                    298:     putc ('\n', FILE);                                                 \
                    299:     if (TARGET_TRACEBACK)                                              \
                    300:       svr4_traceback (FILE, NAME, DECL);                               \
                    301:     ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));                     \
                    302:     ASM_OUTPUT_LABEL(FILE, NAME);                                      \
                    303:   } while (0)
                    304: 
                    305: /* How to renumber registers for dbx and gdb.  */
                    306: 
                    307: #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
                    308: 
                    309: /* svr4.h overrides ASM_OUTPUT_INTERNAL_LABEL.  */
                    310: 
                    311: #undef ASM_OUTPUT_INTERNAL_LABEL_PREFIX
                    312: #define ASM_OUTPUT_INTERNAL_LABEL_PREFIX(FILE,PREFIX)  \
                    313:   fprintf (FILE, ".%s", PREFIX)
                    314: 
                    315: /* Pass -mppc to the assembler, since that is what powerpc.h currently
                    316:    implies.  */
                    317: #undef ASM_SPEC
                    318: #define ASM_SPEC \
                    319:   "-u \
                    320: %{mcpu=601: -m601} %{!mcpu=601: -mppc} \
                    321: %{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \
                    322: %{mrelocatable} \
                    323: %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}"
                    324: 
                    325: /* Output .file and comments listing what options there are */
                    326: #undef ASM_FILE_START
                    327: #define ASM_FILE_START(FILE)                                           \
                    328: do {                                                                   \
                    329:   ASM_OUTPUT_OPTIONS (FILE);                                           \
                    330:   output_file_directive ((FILE), main_input_filename);                 \
                    331: } while (0)
                    332: 
                    333: /* This is the end of what might become sysv4.h.  */
                    334: 
                    335: /* Allow stabs and dwarf, prefer dwarf.  */
                    336: #define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
                    337: #define        DBX_DEBUGGING_INFO
                    338: #define        DWARF_DEBUGGING_INFO
                    339: 
                    340: /* This macro gets just the user-specified name
                    341:    out of the string in a SYMBOL_REF.  Discard
                    342:    a leading * */
                    343: #undef  STRIP_NAME_ENCODING
                    344: #define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \
                    345:   (VAR) = ((SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*'))
                    346: 
                    347: /* Like block addresses, stabs line numbers are relative to the
                    348:    current function.  */
                    349: 
                    350: #undef  ASM_OUTPUT_SOURCE_LINE
                    351: #define ASM_OUTPUT_SOURCE_LINE(file, line)                             \
                    352: do                                                                     \
                    353:   {                                                                    \
                    354:     static int sym_lineno = 1;                                         \
                    355:     char *_p;                                                          \
                    356:     fprintf (file, "\t.stabn 68,0,%d,.LM%d-",                          \
                    357:             line, sym_lineno);                                         \
                    358:     STRIP_NAME_ENCODING (_p, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \
                    359:     assemble_name (file, _p);                                          \
                    360:     fprintf (file, "\n.LM%d:\n", sym_lineno);                          \
                    361:     sym_lineno += 1;                                                   \
                    362:   }                                                                    \
                    363: while (0)
                    364: 
                    365: /* But, to make this work, we have to output the stabs for the function
                    366:    name *first*...  */
                    367: 
                    368: #define        DBX_FUNCTION_FIRST
                    369: 
                    370: /* This is the end of what might become sysv4dbx.h.  */
                    371: 
                    372: #undef TARGET_VERSION
                    373: #define TARGET_VERSION fprintf (stderr, " (PowerPC System V.4)");
                    374: 
                    375: 
                    376: /* Output assembler code for a block containing the constant parts
                    377:    of a trampoline, leaving space for the variable parts.
                    378: 
                    379:    The trampoline should set the static chain pointer to value placed
                    380:    into the trampoline and should branch to the specified routine.
                    381: 
                    382:    Unlike AIX, this needs real code.  */
                    383: 
                    384: #undef TRAMPOLINE_TEMPLATE
                    385: #define TRAMPOLINE_TEMPLATE(FILE)                                      \
                    386: do {                                                                   \
                    387:   char *sc = reg_names[STATIC_CHAIN_REGNUM];                           \
                    388:   char *r0 = reg_names[0];                                             \
                    389:                                                                        \
                    390:   if (STATIC_CHAIN_REGNUM == 0 || !TARGET_NEW_MNEMONICS)               \
                    391:     abort ();                                                          \
                    392:                                                                        \
                    393:   if (TARGET_64BIT)                                                    \
                    394:     {                                                                  \
                    395:       fprintf (FILE, "\tmflr %s\n", r0);               /* offset  0 */ \
                    396:       fprintf (FILE, "\tbl .LTRAMP1\n");               /* offset  4 */ \
                    397:       fprintf (FILE, "\t.long 0,0,0,0\n");             /* offset  8 */ \
                    398:       fprintf (FILE, ".LTRAMP1:\n");                                   \
                    399:       fprintf (FILE, "\tmflr %s\n", sc);               /* offset 28 */ \
                    400:       fprintf (FILE, "\tmtlr %s\n", r0);               /* offset 32 */ \
                    401:       fprintf (FILE, "\tld %s,0(%s)\n", r0, sc);       /* offset 36 */ \
                    402:       fprintf (FILE, "\tld %s,8(%s)\n", sc, sc);       /* offset 40 */ \
                    403:       fprintf (FILE, "\tmtctr %s\n", r0);              /* offset 44 */ \
                    404:       fprintf (FILE, "\tbctr\n");                      /* offset 48 */ \
                    405:     }                                                                  \
                    406:   else                                                                 \
                    407:     {                                                                  \
                    408:       fprintf (FILE, "\tmflr %s\n", r0);               /* offset  0 */ \
                    409:       fprintf (FILE, "\tbl .LTRAMP1\n");               /* offset  4 */ \
                    410:       fprintf (FILE, "\t.long 0,0\n");                 /* offset  8 */ \
                    411:       fprintf (FILE, ".LTRAMP1:\n");                                   \
                    412:       fprintf (FILE, "\tmflr %s\n", sc);               /* offset 20 */ \
                    413:       fprintf (FILE, "\tmtlr %s\n", r0);               /* offset 24 */ \
                    414:       fprintf (FILE, "\tlwz %s,0(%s)\n", r0, sc);      /* offset 28 */ \
                    415:       fprintf (FILE, "\tlwz %s,4(%s)\n", sc, sc);      /* offset 32 */ \
                    416:       fprintf (FILE, "\tmtctr %s\n", r0);              /* offset 36 */ \
                    417:       fprintf (FILE, "\tbctr\n");                      /* offset 40 */ \
                    418:     }                                                                  \
                    419: } while (0)
                    420: 
                    421: /* Length in units of the trampoline for entering a nested function.  */
                    422: 
                    423: #undef TRAMPOLINE_SIZE
                    424: #define TRAMPOLINE_SIZE    (TARGET_64BIT ? 48 : 40)
                    425: 
                    426: /* Emit RTL insns to initialize the variable parts of a trampoline.
                    427:    FNADDR is an RTX for the address of the function's pure code.
                    428:    CXT is an RTX for the static chain value for the function.  */
                    429: 
                    430: #undef INITIALIZE_TRAMPOLINE
                    431: #define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, CXT)                       \
                    432: {                                                                      \
                    433:   rtx reg = gen_reg_rtx (Pmode);                                       \
                    434:                                                                        \
                    435:   emit_move_insn (reg, FNADDR);                                                \
                    436:   emit_move_insn (gen_rtx (MEM, Pmode,                                 \
                    437:                           plus_constant (ADDR, 8)),                    \
                    438:                  reg);                                                 \
                    439:   emit_move_insn (gen_rtx (MEM, Pmode,                                 \
                    440:                           plus_constant (ADDR, (TARGET_64BIT ? 16 : 12))), \
                    441:                  CXT);                                                 \
                    442:   emit_insn (gen_sync_isync (gen_rtx (MEM, BLKmode, ADDR)));           \
                    443: }
                    444: 
                    445: 
                    446: #undef CPP_PREDEFINES
                    447: #define CPP_PREDEFINES \
                    448:   "-DPPC -Dunix -D__svr4__ -Asystem(unix) -Asystem(svr4) -Acpu(powerpc) -Amachine(powerpc)"
                    449: 
                    450: /* Don't put -Y P,<path> for cross compilers */
                    451: #undef LINK_SPEC
                    452: #ifdef CROSS_COMPILE
                    453: #define LINK_SPEC "\
                    454: %{h*} %{V} %{v:%{!V:-V}} \
                    455: %{b} %{Wl,*:%*} \
                    456: %{static:-dn -Bstatic} \
                    457: %{shared:-G -dy -z text %{!h*:%{o*:-h %*}}} \
                    458: %{symbolic:-Bsymbolic -G -dy -z text %{!h*:%{o*:-h %*}}} \
                    459: %{G:-G} \
                    460: %{YP,*} \
                    461: %{Qy:} %{!Qn:-Qy} \
                    462: %{mlittle: -oformat elf32-powerpcle } %{mlittle-endian: -oformat elf32-powerpcle } \
                    463: %{mbig: -oformat elf32-powerpc } %{mbig-endian: -oformat elf32-powerpc }"
                    464: #else
                    465: 
                    466: #define LINK_SPEC "\
                    467: %{h*} %{V} %{v:%{!V:-V}} \
                    468: %{b} %{Wl,*:%*} \
                    469: %{static:-dn -Bstatic} \
                    470: %{shared:-G -dy -z text %{!h*:%{o*:-h %*}}} \
                    471: %{symbolic:-Bsymbolic -G -dy -z text %{!h*:%{o*:-h %*}}} \
                    472: %{G:-G} \
                    473: %{YP,*} \
                    474: %{!nostdlib: %{!YP,*:%{p:-Y P,/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \
                    475:             %{!p:-Y P,/usr/ccs/lib:/usr/lib}}} \
                    476: %{Qy:} %{!Qn:-Qy} \
                    477: %{mlittle: -oformat elf32-powerpcle } %{mlittle-endian: -oformat elf32-powerpcle } \
                    478: %{mbig: -oformat elf32-powerpc } %{mbig-endian: -oformat elf32-powerpc }"
                    479: #endif /* CROSS_COMPILE */
                    480: 
                    481: #undef CPP_SPEC
                    482: #define CPP_SPEC "\
                    483: %{posix: -D_POSIX_SOURCE} \
                    484: %{mrelocatable: -D_RELOCATABLE} \
                    485: %{mcall-sysv: -D_CALL_SYSV} %{mcall-aix: -D_CALL_AIX} %{!mcall-sysv: %{!mcall-aix: -D_CALL_SYSV}} \
                    486: %{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT} \
                    487: %{mlittle: -D_LITTLE_ENDIAN -Amachine(littleendian)} \
                    488: %{mlittle-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)} \
                    489: %{!mlittle: %{!mlittle-endian: -D_BIG_ENDIAN -Amachine(bigendian)}} \
                    490: %{!mcpu*: \
                    491:   %{mpower: %{!mpower2: -D_ARCH_PWR}} \
                    492:   %{mpower2: -D_ARCH_PWR2} \
                    493:   %{mpowerpc*: -D_ARCH_PPC} \
                    494:   %{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \
                    495:   %{!mno-powerpc: -D_ARCH_PPC}} \
                    496: %{mcpu=common: -D_ARCH_COM} \
                    497: %{mcpu=power: -D_ARCH_PWR} \
                    498: %{mcpu=powerpc: -D_ARCH_PPC} \
                    499: %{mcpu=rios: -D_ARCH_PWR} \
                    500: %{mcpu=rios1: -D_ARCH_PWR} \
                    501: %{mcpu=rios2: -D_ARCH_PWR2} \
                    502: %{mcpu=rsc: -D_ARCH_PWR} \
                    503: %{mcpu=rsc1: -D_ARCH_PWR} \
                    504: %{mcpu=403: -D_ARCH_PPC} \
                    505: %{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
                    506: %{mcpu=603: -D_ARCH_PPC} \
                    507: %{mcpu=604: -D_ARCH_PPC}"

unix.superglobalmegacorp.com

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