1132718Skan/* Target definitions for GCC for Intel 80386 running Dynix/ptx v4 2117395Skan Copyright (C) 1996, 2002 Free Software Foundation, Inc. 350397Sobrien 450397Sobrien Modified from sysv4.h 550397Sobrien Originally written by Ron Guilmette (rfg@netcom.com). 650397Sobrien Modified by Tim Wright (timw@sequent.com). 750397Sobrien 8132718SkanThis file is part of GCC. 950397Sobrien 10132718SkanGCC is free software; you can redistribute it and/or modify 1150397Sobrienit under the terms of the GNU General Public License as published by 1250397Sobrienthe Free Software Foundation; either version 2, or (at your option) 1350397Sobrienany later version. 1450397Sobrien 15132718SkanGCC is distributed in the hope that it will be useful, 1650397Sobrienbut WITHOUT ANY WARRANTY; without even the implied warranty of 1750397SobrienMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1850397SobrienGNU General Public License for more details. 1950397Sobrien 2050397SobrienYou should have received a copy of the GNU General Public License 21132718Skanalong with GCC; see the file COPYING. If not, write to 22169689Skanthe Free Software Foundation, 51 Franklin Street, Fifth Floor, 23169689SkanBoston, MA 02110-1301, USA. */ 2450397Sobrien 2550397Sobrien 2650397Sobrien#define TARGET_VERSION fprintf (stderr, " (i386 Sequent Dynix/ptx Version 4)"); 2750397Sobrien 2850397Sobrien/* The svr4 ABI for the i386 says that records and unions are returned 2950397Sobrien in memory. */ 3050397Sobrien 3150397Sobrien#undef RETURN_IN_MEMORY 3250397Sobrien#define RETURN_IN_MEMORY(TYPE) \ 3390075Sobrien (TYPE_MODE (TYPE) == BLKmode \ 3490075Sobrien || (VECTOR_MODE_P (TYPE_MODE (TYPE)) && int_size_in_bytes (TYPE) == 8)) 3550397Sobrien 36117395Skan#define TARGET_OS_CPP_BUILTINS() \ 37117395Skan do \ 38117395Skan { \ 39117395Skan builtin_define_std ("unix"); \ 40117395Skan builtin_define ("_SEQUENT_"); \ 41117395Skan builtin_assert ("system=unix"); \ 42117395Skan builtin_assert ("system=ptx4"); \ 43117395Skan } \ 44117395Skan while (0) 4550397Sobrien 4650397Sobrien#undef DBX_REGISTER_NUMBER 4790075Sobrien#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n] 4850397Sobrien 4950397Sobrien/* The routine used to output sequences of byte values. We use a special 5050397Sobrien version of this for most svr4 targets because doing so makes the 5150397Sobrien generated assembly code more compact (and thus faster to assemble) 5250397Sobrien as well as more readable. Note that if we find subparts of the 5350397Sobrien character sequence which end with NUL (and which are shorter than 5450397Sobrien STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING. */ 5550397Sobrien 5650397Sobrien#undef ASM_OUTPUT_ASCII 5750397Sobrien#define ASM_OUTPUT_ASCII(FILE, STR, LENGTH) \ 5850397Sobrien do \ 5950397Sobrien { \ 60132718Skan const unsigned char *_ascii_bytes = \ 6190075Sobrien (const unsigned char *) (STR); \ 62132718Skan const unsigned char *limit = _ascii_bytes + (LENGTH); \ 63132718Skan unsigned bytes_in_chunk = 0; \ 6450397Sobrien for (; _ascii_bytes < limit; _ascii_bytes++) \ 6550397Sobrien { \ 66132718Skan const unsigned char *p; \ 6750397Sobrien if (bytes_in_chunk >= 64) \ 6850397Sobrien { \ 6950397Sobrien fputc ('\n', (FILE)); \ 7050397Sobrien bytes_in_chunk = 0; \ 7150397Sobrien } \ 7250397Sobrien for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \ 7350397Sobrien continue; \ 7490075Sobrien if (p < limit && (p - _ascii_bytes) <= (long) STRING_LIMIT) \ 7550397Sobrien { \ 7650397Sobrien if (bytes_in_chunk > 0) \ 7750397Sobrien { \ 7850397Sobrien fputc ('\n', (FILE)); \ 7950397Sobrien bytes_in_chunk = 0; \ 8050397Sobrien } \ 8150397Sobrien ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); \ 8250397Sobrien _ascii_bytes = p; \ 8350397Sobrien } \ 8450397Sobrien else \ 8550397Sobrien { \ 8650397Sobrien if (bytes_in_chunk == 0) \ 8750397Sobrien fprintf ((FILE), "\t.byte\t"); \ 8850397Sobrien else \ 8950397Sobrien fputc (',', (FILE)); \ 9050397Sobrien fprintf ((FILE), "0x%02x", *_ascii_bytes); \ 9150397Sobrien bytes_in_chunk += 5; \ 9250397Sobrien } \ 9350397Sobrien } \ 9450397Sobrien if (bytes_in_chunk > 0) \ 9550397Sobrien fprintf ((FILE), "\n"); \ 9650397Sobrien } \ 9750397Sobrien while (0) 98