1 #ifndef _SYSDEFS_H 2 #define _SYSDEFS_H 3 /* sysdefs.h */ 4 /*****************************************************************************/ 5 /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only */ 6 /* */ 7 /* AS Port */ 8 /* */ 9 /* system-specific definitions */ 10 /* */ 11 /* History: 2001-04-13 activated DRSEP for Win32 platform */ 12 /* 2001-09-11 added MacOSX */ 13 /* 2001-10-13 added ARM/Linux */ 14 /* */ 15 /*****************************************************************************/ 16 /* $Id: sysdefs.h,v 1.16 2016/09/22 15:36:15 alfred Exp $ */ 17 /***************************************************************************** 18 * $Log: sysdefs.h,v $ 19 * Revision 1.16 2016/09/22 15:36:15 alfred 20 * - use platform-dependent format string for LongInt 21 * 22 * Revision 1.15 2015/08/21 19:12:19 alfred 23 * - avoid double definition if both K8 and x86_64 set 24 * 25 * Revision 1.14 2015/03/04 18:37:24 alfred 26 * - add AArch64 27 * 28 * Revision 1.13 2014/05/29 10:59:06 alfred 29 * - some const cleanups 30 * 31 * Revision 1.12 2012-11-28 20:47:29 alfred 32 * - correct typo 33 * 34 * Revision 1.11 2012-08-22 20:01:22 alfred 35 * - add OSX 32 bit 36 * 37 * Revision 1.10 2012-08-19 09:39:18 alfred 38 * - consider OSX 39 * 40 * Revision 1.9 2012-05-16 21:04:23 alfred 41 * - add Linux/MIPS 42 * 43 * Revision 1.8 2012-01-14 14:34:58 alfred 44 * - add some platforms 45 * 46 * Revision 1.7 2008/01/02 22:32:21 alfred 47 * - better heap checking for DOS target 48 * 49 * Revision 1.6 2007/11/24 22:48:08 alfred 50 * - some NetBSD changes 51 * 52 * Revision 1.5 2007/09/16 08:56:04 alfred 53 * - add K8 target 54 * 55 * Revision 1.4 2006/05/01 09:09:10 alfred 56 * - treat __PPC__ like _POWER 57 * 58 * Revision 1.3 2004/02/08 20:39:25 alfred 59 * - 60 * 61 * Revision 1.2 2004/01/17 16:12:35 alfred 62 * - add ePOC 63 * 64 *****************************************************************************/ 65 66 /* NOTE: 67 * 68 * when adding new platforms, " gcc -dM -E - <<<'' " might be helpful to 69 * find out about predefined symbols 70 * 71 */ 72 73 /*---------------------------------------------------------------------------*/ 74 /* unify 68K platforms */ 75 76 #ifdef __mc68020 77 #ifndef __m68k 78 #define __m68k 79 #endif 80 #endif 81 82 #ifdef m68000 83 #ifndef __m68k 84 #define __m68k 85 #endif 86 #endif 87 88 #ifdef __mc68000 89 # ifndef __m68k 90 # define __m68k 91 # endif 92 #endif 93 94 /*---------------------------------------------------------------------------*/ 95 /* ditto for i386 platforms */ 96 97 /* MSDOS only runs on x86s... */ 98 99 #ifdef __MSDOS__ 100 #define __i386 101 #endif 102 103 /* For IBMC... */ 104 105 #ifdef _M_I386 106 #define __i386 107 #endif 108 109 #ifdef __i386__ 110 #ifndef __i386 111 #define __i386 112 #endif 113 #endif 114 115 /*---------------------------------------------------------------------------*/ 116 /* ditto for VAX platforms */ 117 118 #ifdef vax 119 #define __vax__ 120 #endif 121 122 /*---------------------------------------------------------------------------*/ 123 /* ditto for PPC platforms */ 124 125 #ifdef __PPC 126 #ifndef _POWER 127 #define _POWER 128 #endif 129 #endif 130 131 #ifdef __ppc__ 132 #ifndef _POWER 133 #define _POWER 134 #endif 135 #endif 136 137 #ifdef __PPC__ 138 # ifndef _POWER 139 # define _POWER 140 # endif 141 #endif 142 143 /*---------------------------------------------------------------------------*/ 144 /* ditto for ARM platforms */ 145 146 #ifdef __arm__ 147 #ifndef __arm 148 #define __arm 149 #endif 150 #endif 151 152 /*---------------------------------------------------------------------------*/ 153 /* If the compiler claims to be ANSI, we surely can use prototypes */ 154 155 #ifdef __STDC__ 156 #define __PROTOS__ 157 #define UNUSED(x) (void)x 158 #else 159 #define UNUSED(x) {} 160 #endif 161 162 /*---------------------------------------------------------------------------*/ 163 /* just a hack to allow distinguishing SunOS from Solaris on Sparcs... */ 164 165 #ifdef sparc 166 #ifndef __sparc 167 #define __sparc 168 #endif 169 #endif 170 171 #ifdef __sparc 172 # ifndef __NetBSD__ 173 # ifndef __FreeBSD__ 174 # ifndef __linux__ 175 # ifndef __SVR4 176 # define __sunos__ 177 # else /* __SVR4 */ 178 # define __solaris__ 179 # endif /* __SVR4 */ 180 # endif /* __linux__ */ 181 # endif /* __FreeBSD__ */ 182 # endif /* __NetBSD */ 183 #endif /* __sparc */ 184 185 #ifdef __sparc__ 186 #ifndef __sparc 187 #define __sparc 188 #endif 189 #endif 190 191 /*---------------------------------------------------------------------------*/ 192 /* similar on Sun 3's... */ 193 194 #ifdef __m68k 195 #ifndef __NetBSD__ 196 #ifndef __MUNIX__ 197 #ifndef __amiga 198 #define __sunos__ 199 #endif 200 #endif 201 #endif 202 #endif 203 204 /*===========================================================================*/ 205 /* 68K platforms */ 206 207 #ifdef __m68k 208 209 #define ARCHPRNAME "m68k" 210 211 /*---------------------------------------------------------------------------*/ 212 /* SUN/3 with SunOS 4.x: 213 214 see my SunOS quarrels in the Sparc section... */ 215 216 #ifdef __sunos__ 217 #define ARCHSYSNAME "sun-sunos" 218 #define DEFSMADE 219 #define OPENRDMODE "r" 220 #define OPENWRMODE "w" 221 #define OPENUPMODE "r+" 222 #define IEEEFLOAT 223 typedef signed char Integ8; 224 typedef unsigned char Card8; 225 typedef signed short Integ16; 226 typedef unsigned short Card16; 227 #define HAS16 228 typedef signed int Integ32; 229 #define PRIInteg32 "d" 230 typedef unsigned int Card32; 231 #ifdef __GNUC__ 232 typedef signed long long Integ64; 233 typedef unsigned long long Card64; 234 #define HAS64 235 #else 236 #define NOLONGLONG 237 #endif 238 #define memmove(s1,s2,len) bcopy(s2,s1,len) 239 extern void bcopy(); 240 #define NO_NLS 241 #endif 242 243 /*---------------------------------------------------------------------------*/ 244 /* SUN/3 with NetBSD 1.x: 245 246 quite a normal 32-Bit-UNIX system */ 247 248 #ifdef __NetBSD__ 249 #define ARCHSYSNAME "sun-netbsd" 250 #define DEFSMADE 251 #define OPENRDMODE "r" 252 #define OPENWRMODE "w" 253 #define OPENUPMODE "r+" 254 #define IEEEFLOAT 255 typedef signed char Integ8; 256 typedef unsigned char Card8; 257 typedef signed short Integ16; 258 typedef unsigned short Card16; 259 #define HAS16 260 typedef signed int Integ32; 261 #define PRIInteg32 "d" 262 typedef unsigned int Card32; 263 typedef signed long long Integ64; 264 typedef unsigned long long Card64; 265 #define HAS64 266 #define LOCALE_NLS 267 #endif 268 269 /*---------------------------------------------------------------------------*/ 270 /* PCS/Cadmus: 271 272 quite a bare system, lots of work required... */ 273 274 #ifdef __MUNIX__ 275 #define ARCHSYSNAME "pcs-munix" 276 #define DEFSMADE 277 #define OPENRDMODE "r" 278 #define OPENWRMODE "w" 279 #define OPENUPMODE "r+" 280 #define IEEEFLOAT 281 #define NEEDS_STRSTR 282 typedef char Integ8; 283 typedef unsigned char Card8; 284 typedef short Integ16; 285 typedef unsigned short Card16; 286 #define HAS16 287 typedef int Integ32; 288 #define PRIInteg32 "d" 289 typedef unsigned int Card32; 290 #define NOLONGLONG 291 #define memmove(s1,s2,len) bcopy(s2,s1,len) 292 extern double strtod(); 293 extern char *getenv(); 294 #define NO_NLS 295 #endif 296 297 /*---------------------------------------------------------------------------*/ 298 /* Linux/68K: 299 300 quite a normal 32-Bit-UNIX system */ 301 302 #ifdef __linux__ 303 #define ARCHSYSNAME "unknown-linux" 304 #define DEFSMADE 305 #define OPENRDMODE "r" 306 #define OPENWRMODE "w" 307 #define OPENUPMODE "r+" 308 #define IEEEFLOAT 309 typedef signed char Integ8; 310 typedef unsigned char Card8; 311 typedef signed short Integ16; 312 typedef unsigned short Card16; 313 #define HAS16 314 typedef signed int Integ32; 315 #define PRIInteg32 "d" 316 typedef unsigned int Card32; 317 typedef signed long long Integ64; 318 typedef unsigned long long Card64; 319 #define HAS64 320 #define NO_NLS 321 #endif 322 323 #endif /* __m68k */ 324 325 /*===========================================================================*/ 326 /* SPARC platforms */ 327 328 #ifdef __sparc 329 330 #define ARCHPRNAME "sparc" 331 332 /*---------------------------------------------------------------------------*/ 333 /* SUN Sparc with SunOS 4.1.x: 334 335 don't try cc, use gcc, it's hopeless without an ANSI-compliant compiler... 336 SunOS does have NLS support, but it does not have D_FMT and T_FMT 337 I should change this ... 338 Though the manual pages claim that memmove and atexit exist, I could not 339 find them in any library :-( Fortunately, bcopy claims to be safe for 340 overlapping arrays, we just have to reverse source and destination pointers. 341 The sources themselves contain a switch to use on_exit instead of atexit 342 (it uses a different callback scheme, so we cannot just make a #define here...) 343 To get rid of most of the messages about missing prototypes, add 344 -D__USE_FIXED_PROTOTYPES__ to your compiler flags! 345 Apart from these few points, one could claim SunOS to be quite a normal 346 32-bit-UNIX... */ 347 348 #ifdef __sunos__ 349 #define ARCHSYSNAME "sun-sunos" 350 #define DEFSMADE 351 #define OPENRDMODE "r" 352 #define OPENWRMODE "w" 353 #define OPENUPMODE "r+" 354 #define IEEEFLOAT 355 typedef signed char Integ8; 356 typedef unsigned char Card8; 357 typedef signed short Integ16; 358 typedef unsigned short Card16; 359 #define HAS16 360 typedef signed int Integ32; 361 #define PRIInteg32 "d" 362 typedef unsigned int Card32; 363 #ifdef __GNUC__ 364 typedef signed long long Integ64; 365 typedef unsigned long long Card64; 366 #define HAS64 367 #else 368 #define NOLONGLONG 369 #endif 370 #define fpos_t long 371 #ifdef __STDC__ 372 extern void bcopy(); 373 #endif 374 #define memmove(s1,s2,len) bcopy(s2,s1,len) 375 #define NO_NLS 376 #endif 377 378 /*---------------------------------------------------------------------------*/ 379 /* SUN Sparc with Solaris 2.x: 380 381 quite a normal 32-Bit-UNIX system */ 382 383 #ifdef __solaris__ 384 #define ARCHSYSNAME "sun-solaris" 385 #define DEFSMADE 386 #define OPENRDMODE "r" 387 #define OPENWRMODE "w" 388 #define OPENUPMODE "r+" 389 #define IEEEFLOAT 390 typedef signed char Integ8; 391 typedef unsigned char Card8; 392 typedef signed short Integ16; 393 typedef unsigned short Card16; 394 #define HAS16 395 typedef signed int Integ32; 396 #define PRIInteg32 "d" 397 typedef unsigned int Card32; 398 typedef signed long long Integ64; 399 typedef unsigned long long Card64; 400 #define HAS64 401 #define LOCALE_NLS 402 #endif 403 404 /*---------------------------------------------------------------------------*/ 405 /* Sparc with NetBSD 1.x: 406 407 quite a normal 32-Bit-UNIX system */ 408 409 #ifdef __NetBSD__ 410 #define ARCHSYSNAME "sun-netbsd" 411 #define DEFSMADE 412 #define OPENRDMODE "r" 413 #define OPENWRMODE "w" 414 #define OPENUPMODE "r+" 415 #define IEEEFLOAT 416 typedef signed char Integ8; 417 typedef unsigned char Card8; 418 typedef signed short Integ16; 419 typedef unsigned short Card16; 420 #define HAS16 421 typedef signed int Integ32; 422 #define PRIInteg32 "d" 423 typedef unsigned int Card32; 424 typedef signed long long Integ64; 425 typedef unsigned long long Card64; 426 #define HAS64 427 #define LOCALE_NLS 428 #endif 429 430 /*---------------------------------------------------------------------------*/ 431 /* Sparc with Linux */ 432 433 #ifdef __linux__ 434 #define ARCHSYSNAME "unknown-linux" 435 #define DEFSMADE 436 #define OPENRDMODE "r" 437 #define OPENWRMODE "w" 438 #define OPENUPMODE "r+" 439 #define IEEEFLOAT 440 typedef signed char Integ8; 441 typedef unsigned char Card8; 442 typedef signed short Integ16; 443 typedef unsigned short Card16; 444 #define HAS16 445 typedef signed int Integ32; 446 #define PRIInteg32 "d" 447 typedef unsigned int Card32; 448 typedef signed long long Integ64; 449 typedef unsigned long long Card64; 450 #define HAS64 451 #define LOCALE_NLS 452 #endif 453 454 #endif /* __sparc */ 455 456 /*===========================================================================*/ 457 /* Mips platforms */ 458 459 #ifdef __mips 460 461 #define ARCHPRNAME "mips" 462 463 /*---------------------------------------------------------------------------*/ 464 /* R3000 with Ultrix 4.3: 465 466 nl_langinfo prototype is there, but no function in library ?! 467 use long long only if you have gcc, c89 doesn't like them ! 468 cc isn't worth trying, believe me! */ 469 470 #ifdef __ultrix 471 #define ARCHSYSNAME "dec-ultrix" 472 #define DEFSMADE 473 #define OPENRDMODE "r" 474 #define OPENWRMODE "w" 475 #define OPENUPMODE "r+" 476 #define IEEEFLOAT 477 #define NEEDS_STRDUP 478 typedef signed char Integ8; 479 typedef unsigned char Card8; 480 typedef signed short Integ16; 481 typedef unsigned short Card16; 482 #define HAS16 483 typedef signed int Integ32; 484 #define PRIInteg32 "d" 485 typedef unsigned int Card32; 486 #ifdef __GNUC__ 487 typedef signed long long Integ64; 488 typedef unsigned long long Card64; 489 #define HAS64 490 #else 491 #define NOLONGLONG 492 #endif 493 #define NO_NLS 494 #endif 495 496 /*---------------------------------------------------------------------------*/ 497 /* R2000/3000 with NetBSD 1.2: 498 499 quite a normal 32-Bit-UNIX system */ 500 501 #ifdef __NetBSD__ 502 #define ARCHSYSNAME "dec-netbsd" 503 #define DEFSMADE 504 #define OPENRDMODE "r" 505 #define OPENWRMODE "w" 506 #define OPENUPMODE "r+" 507 #define IEEEFLOAT 508 typedef signed char Integ8; 509 typedef unsigned char Card8; 510 typedef signed short Integ16; 511 typedef unsigned short Card16; 512 #define HAS16 513 typedef signed int Integ32; 514 #define PRIInteg32 "d" 515 typedef unsigned int Card32; 516 typedef signed long long Integ64; 517 typedef unsigned long long Card64; 518 #define HAS64 519 #define LOCALE_NLS 520 #endif 521 522 /*---------------------------------------------------------------------------*/ 523 /* R3000/4x00 with Irix 5.x: 524 525 quite a normal 32-Bit-UNIX system 526 seems also to work with 6.2... */ 527 528 #ifdef __sgi 529 #define ARCHSYSNAME "sgi-irix" 530 #define DEFSMADE 531 #define OPENRDMODE "r" 532 #define OPENWRMODE "w" 533 #define OPENUPMODE "r+" 534 #define IEEEFLOAT 535 typedef signed char Integ8; 536 typedef unsigned char Card8; 537 typedef signed short Integ16; 538 typedef unsigned short Card16; 539 #define HAS16 540 typedef signed int Integ32; 541 #define PRIInteg32 "d" 542 typedef unsigned int Card32; 543 typedef signed long long Integ64; 544 typedef unsigned long long Card64; 545 #define HAS64 546 #define LOCALE_NLS 547 #endif 548 549 #ifdef __linux__ 550 #define ARCHSYSNAME "unknown-linux" 551 #define DEFSMADE 552 #define OPENRDMODE "r" 553 #define OPENWRMODE "w" 554 #define OPENUPMODE "r+" 555 #define IEEEFLOAT 556 typedef signed char Integ8; 557 typedef unsigned char Card8; 558 typedef signed short Integ16; 559 typedef unsigned short Card16; 560 #define HAS16 561 typedef signed int Integ32; 562 #define PRIInteg32 "d" 563 typedef unsigned int Card32; 564 typedef signed long long Integ64; 565 typedef unsigned long long Card64; 566 #define HAS64 567 #define LOCALE_NLS 568 #endif 569 570 #endif /* __mips */ 571 572 /*===========================================================================*/ 573 /* HP-PA platforms */ 574 575 #ifdef __hppa 576 577 #define ARCHPRNAME "parisc" 578 579 /*---------------------------------------------------------------------------*/ 580 /* HP-PA 1.x with HP-UX: */ 581 582 #ifdef __hpux 583 #define ARCHSYSNAME "hp-hpux" 584 #define DEFSMADE 585 #define OPENRDMODE "r" 586 #define OPENWRMODE "w" 587 #define OPENUPMODE "r+" 588 #define IEEEFLOAT 589 typedef signed char Integ8; 590 typedef unsigned char Card8; 591 typedef signed short Integ16; 592 typedef unsigned short Card16; 593 #define HAS16 594 typedef signed int Integ32; 595 #define PRIInteg32 "d" 596 typedef unsigned int Card32; 597 typedef signed long long Integ64; 598 typedef unsigned long long Card64; 599 #define HAS64 600 #define LOCALE_NLS 601 #endif 602 603 #endif /* __hppa */ 604 605 /*===========================================================================*/ 606 /* POWER platforms */ 607 608 #ifdef _POWER 609 610 #define ARCHPRNAME "ppc" 611 612 /*---------------------------------------------------------------------------*/ 613 /* POWER with AIX 4.1: rs6000 */ 614 615 #ifdef _AIX 616 #define ARCHSYSNAME "ibm-aix" 617 #define DEFSMADE 618 #define OPENRDMODE "r" 619 #define OPENWRMODE "w" 620 #define OPENUPMODE "r+" 621 #define IEEEFLOAT 622 typedef signed char Integ8; 623 typedef unsigned char Card8; 624 typedef signed short Integ16; 625 typedef unsigned short Card16; 626 #define HAS16 627 typedef signed int Integ32; 628 #define PRIInteg32 "d" 629 typedef unsigned int Card32; 630 typedef signed long long Integ64; 631 typedef unsigned long long Card64; 632 #define HAS64 633 #define LOCALE_NLS 634 #endif 635 636 /*---------------------------------------------------------------------------*/ 637 /* POWER with Linux (Macintosh) */ 638 639 #ifdef __linux__ 640 #define ARCHSYSNAME "unknown-linux" 641 #define DEFSMADE 642 #define OPENRDMODE "r" 643 #define OPENWRMODE "w" 644 #define OPENUPMODE "r+" 645 #define IEEEFLOAT 646 typedef signed char Integ8; 647 typedef unsigned char Card8; 648 typedef signed short Integ16; 649 typedef unsigned short Card16; 650 #define HAS16 651 typedef signed int Integ32; 652 #define PRIInteg32 "d" 653 typedef unsigned int Card32; 654 typedef signed long long Integ64; 655 typedef unsigned long long Card64; 656 #define HAS64 657 #define LOCALE_NLS 658 #endif 659 660 /*---------------------------------------------------------------------------*/ 661 /* POWER with OSX (Macintosh) */ 662 663 #ifdef __APPLE__ 664 #define ARCHSYSNAME "apple-macosx" 665 #define DEFSMADE 666 #define OPENRDMODE "r" 667 #define OPENWRMODE "w" 668 #define OPENUPMODE "r+" 669 #define IEEEFLOAT 670 typedef signed char Integ8; 671 typedef unsigned char Card8; 672 typedef signed short Integ16; 673 typedef unsigned short Card16; 674 #define HAS16 675 typedef signed int Integ32; 676 #define PRIInteg32 "d" 677 typedef unsigned int Card32; 678 typedef signed long long Integ64; 679 typedef unsigned long long Card64; 680 #define HAS64 681 #define NO_NLS 682 #endif 683 684 #endif /* _POWER */ 685 686 /*===========================================================================*/ 687 /* VAX platforms */ 688 689 #ifdef __vax__ 690 691 #define ARCHPRNAME "vax" 692 693 /*---------------------------------------------------------------------------*/ 694 /* VAX with Ultrix: */ 695 696 #ifdef ultrix 697 #define ARCHSYSNAME "dec-ultrix" 698 #define DEFSMADE 699 #define OPENRDMODE "r" 700 #define OPENWRMODE "w" 701 #define OPENUPMODE "r+" 702 #define VAXFLOAT 703 #define NEEDS_STRDUP 704 #define BKOKEN_SPRINTF 705 typedef signed char Integ8; 706 typedef unsigned char Card8; 707 typedef signed short Integ16; 708 typedef unsigned short Card16; 709 #define HAS16 710 typedef signed int Integ32; 711 #define PRIInteg32 "d" 712 typedef unsigned int Card32; 713 #define NOLONGLONG 714 #define NO_NLS 715 #endif 716 717 /*---------------------------------------------------------------------------*/ 718 /* VAX with NetBSD 1.x: 719 720 quite a normal 32-Bit-UNIX system - apart from the float format... */ 721 722 #ifdef __NetBSD__ 723 #define ARCHSYSNAME "vax-netbsd" 724 #define DEFSMADE 725 #define OPENRDMODE "r" 726 #define OPENWRMODE "w" 727 #define OPENUPMODE "r+" 728 #define VAXFLOAT 729 typedef signed char Integ8; 730 typedef unsigned char Card8; 731 typedef signed short Integ16; 732 typedef unsigned short Card16; 733 #define HAS16 734 typedef signed int Integ32; 735 #define PRIInteg32 "d" 736 typedef unsigned int Card32; 737 typedef signed long long Integ64; 738 typedef unsigned long long Card64; 739 #define HAS64 740 #define LOCALE_NLS 741 #endif 742 743 #endif /* vax */ 744 745 #ifdef __aarch64__ 746 747 #define ARCHPRNAME "aarch64" 748 749 /*---------------------------------------------------------------------------*/ 750 /* AArch64 with Linux and GCC: */ 751 752 #ifdef __linux__ 753 #define ARCHSYSNAME "unknown-linux" 754 #define DEFSMADE 755 #define OPENRDMODE "r" 756 #define OPENWRMODE "w" 757 #define OPENUPMODE "r+" 758 #define IEEEFLOAT 759 typedef signed char Integ8; 760 typedef unsigned char Card8; 761 typedef signed short Integ16; 762 typedef unsigned short Card16; 763 #define HAS16 764 typedef signed int Integ32; 765 #define PRIInteg32 "d" 766 typedef unsigned int Card32; 767 typedef signed long Integ64; 768 typedef unsigned long Card64; 769 #define HAS64 770 #define LOCALE_NLS 771 #endif 772 773 #endif /* __aarch64__ */ 774 775 /*===========================================================================*/ 776 /* DEC Alpha platforms */ 777 778 #ifdef __alpha 779 780 #define ARCHPRNAME "alpha" 781 782 /*---------------------------------------------------------------------------*/ 783 /* DEC Alpha with Digital UNIX and DEC C / GCC: 784 785 Alpha is a 64 bit machine, so we do not need to use extra longs 786 OSF has full NLS support */ 787 788 #ifdef __osf__ 789 #define ARCHSYSNAME "dec-osf" 790 #define DEFSMADE 791 #define OPENRDMODE "r" 792 #define OPENWRMODE "w" 793 #define OPENUPMODE "r+" 794 #define IEEEFLOAT 795 typedef signed char Integ8; 796 typedef unsigned char Card8; 797 typedef signed short Integ16; 798 typedef unsigned short Card16; 799 #define HAS16 800 typedef signed int Integ32; 801 #define PRIInteg32 "d" 802 typedef unsigned int Card32; 803 typedef signed long Integ64; 804 typedef unsigned long Card64; 805 #define HAS64 806 #define LOCALE_NLS 807 #endif 808 809 /*---------------------------------------------------------------------------*/ 810 /* DEC Alpha with Linux and GCC: 811 812 see OSF... */ 813 814 #ifdef __linux__ 815 #define ARCHSYSNAME "unknown-linux" 816 #define DEFSMADE 817 #define OPENRDMODE "r" 818 #define OPENWRMODE "w" 819 #define OPENUPMODE "r+" 820 #define IEEEFLOAT 821 typedef signed char Integ8; 822 typedef unsigned char Card8; 823 typedef signed short Integ16; 824 typedef unsigned short Card16; 825 #define HAS16 826 typedef signed int Integ32; 827 #define PRIInteg32 "d" 828 typedef unsigned int Card32; 829 typedef signed long Integ64; 830 typedef unsigned long Card64; 831 #define HAS64 832 #define LOCALE_NLS 833 #endif 834 835 /*---------------------------------------------------------------------------*/ 836 /* DEC Alpha with NetBSD and GCC: 837 838 see OSF... */ 839 840 #ifdef __NetBSD__ 841 #define ARCHSYSNAME "unknown-netbsd" 842 #define DEFSMADE 843 #define OPENRDMODE "r" 844 #define OPENWRMODE "w" 845 #define OPENUPMODE "r+" 846 #define IEEEFLOAT 847 typedef signed char Integ8; 848 typedef unsigned char Card8; 849 typedef signed short Integ16; 850 typedef unsigned short Card16; 851 #define HAS16 852 typedef signed int Integ32; 853 #define PRIInteg32 "d" 854 typedef unsigned int Card32; 855 typedef signed long Integ64; 856 typedef unsigned long Card64; 857 #define HAS64 858 #define LOCALE_NLS 859 #endif 860 861 #ifdef __FreeBSD__ 862 #define ARCHSYSNAME "unknown-freebsd" 863 #define DEFSMADE 864 #define OPENRDMODE "r" 865 #define OPENWRMODE "w" 866 #define OPENUPMODE "r+" 867 #define IEEEFLOAT 868 typedef int8_t Integ8; 869 typedef uint8_t Card8; 870 typedef int16_t Integ16; 871 typedef uint16_t Card16; 872 #define HAS16 873 typedef uint32_t Integ32; 874 #define PRIInteg32 PRId 875 typedef uint32_t Card32; 876 typedef int64_t Integ64; 877 typedef uint65_t Card64; 878 #define HAS64 879 #define NO_NLS 880 #endif 881 882 #endif /* __alpha */ 883 884 /*===========================================================================*/ 885 /* Intel i386 platforms */ 886 887 #ifdef __i386 888 889 #define ARCHPRNAME "i386" 890 891 /*---------------------------------------------------------------------------*/ 892 /* Intel i386 with NetBSD 1. and GCC: (tested on 1.5.3) 893 894 principally, a normal 32-bit UNIX */ 895 896 #ifdef __NetBSD__ 897 #define ARCHSYSNAME "i386-netbsd" 898 #define DEFSMADE 899 #define OPENRDMODE "r" 900 #define OPENWRMODE "w" 901 #define OPENUPMODE "r+" 902 #define IEEEFLOAT 903 typedef signed char Integ8; 904 typedef unsigned char Card8; 905 typedef signed short Integ16; 906 typedef unsigned short Card16; 907 #define HAS16 908 typedef signed int Integ32; 909 #define PRIInteg32 "d" 910 typedef unsigned int Card32; 911 typedef signed long long Integ64; 912 typedef unsigned long long Card64; 913 #define HAS64 914 #define LOCALE_NLS 915 #endif 916 917 /*---------------------------------------------------------------------------*/ 918 /* Intel i386 with Linux and GCC: 919 920 principally, a normal 32-bit *NIX */ 921 922 #ifdef __linux__ 923 924 /* no long long data type if C89 is used */ 925 926 #if (defined __STDC__) && (!defined __STDC_VERSION__) 927 # define NOLONGLONG 928 #endif 929 930 #define ARCHSYSNAME "unknown-linux" 931 #define DEFSMADE 932 #define OPENRDMODE "r" 933 #define OPENWRMODE "w" 934 #define OPENUPMODE "r+" 935 #define IEEEFLOAT 936 typedef signed char Integ8; 937 typedef unsigned char Card8; 938 typedef signed short Integ16; 939 typedef unsigned short Card16; 940 #define HAS16 941 typedef signed int Integ32; 942 #define PRIInteg32 "d" 943 typedef unsigned int Card32; 944 #ifndef NOLONGLONG 945 typedef signed long long Integ64; 946 typedef unsigned long long Card64; 947 #define HAS64 948 #endif /* !NOLONGLONG */ 949 #define LOCALE_NLS 950 #endif 951 952 /*---------------------------------------------------------------------------*/ 953 /* Intel i386 with FreeBSD and GCC: 954 955 principally, a normal 32-bit *NIX */ 956 957 #ifdef __FreeBSD__ 958 #define ARCHSYSNAME "unknown-freebsd" 959 #define DEFSMADE 960 #define OPENRDMODE "r" 961 #define OPENWRMODE "w" 962 #define OPENUPMODE "r+" 963 #define IEEEFLOAT 964 typedef signed char Integ8; 965 typedef unsigned char Card8; 966 typedef signed short Integ16; 967 typedef unsigned short Card16; 968 #define HAS16 969 typedef signed int Integ32; 970 #define PRIInteg32 "d" 971 typedef unsigned int Card32; 972 typedef signed long long Integ64; 973 typedef unsigned long long Card64; 974 #define HAS64 975 #define NO_NLS 976 #endif 977 978 /*---------------------------------------------------------------------------*/ 979 /* Intel i386 with Darwin and GCC: 980 principally, a normal 32-bit *NIX */ 981 982 #ifdef __APPLE__ 983 #define ARCHSYSNAME "apple-osx" 984 #define DEFSMADE 985 #define OPENRDMODE "r" 986 #define OPENWRMODE "w" 987 #define OPENUPMODE "r+" 988 #define IEEEFLOAT 989 typedef signed char Integ8; 990 typedef unsigned char Card8; 991 typedef signed short Integ16; 992 typedef unsigned short Card16; 993 #define HAS16 994 typedef signed int Integ32; 995 #define PRIInteg32 "d" 996 typedef unsigned int Card32; 997 typedef signed long long Integ64; 998 typedef unsigned long long Card64; 999 #define HAS64 1000 #define LOCALE_NLS 1001 #endif 1002 1003 /*---------------------------------------------------------------------------*/ 1004 /* Intel i386 with WIN32 and Cygnus GCC: 1005 1006 well, not really a UNIX... */ 1007 1008 #ifdef _WIN32 1009 1010 /* no long long data type if C89 is used */ 1011 1012 #if (defined __STDC__) && (!defined __STDC_VERSION__) 1013 # define NOLONGLONG 1014 #endif 1015 1016 #define ARCHSYSNAME "unknown-win32" 1017 #define DEFSMADE 1018 #define OPENRDMODE "rb" 1019 #define OPENWRMODE "wb" 1020 #define OPENUPMODE "rb+" 1021 #define IEEEFLOAT 1022 #define SLASHARGS 1023 #define PATHSEP '\\' 1024 #define SPATHSEP "\\" 1025 #define DIRSEP ';' 1026 #define SDIRSEP ";" 1027 #define DRSEP ':' 1028 #define SDRSEP ":" 1029 #define NULLDEV "NUL" 1030 typedef signed char Integ8; 1031 typedef unsigned char Card8; 1032 typedef signed short Integ16; 1033 typedef unsigned short Card16; 1034 #define HAS16 1035 typedef signed int Integ32; 1036 #define PRIInteg32 "d" 1037 typedef unsigned int Card32; 1038 #ifndef NOLONGLONG 1039 typedef signed long long Integ64; 1040 typedef unsigned long long Card64; 1041 # define HAS64 1042 #endif 1043 #define W32_NLS 1044 #endif 1045 1046 /*---------------------------------------------------------------------------*/ 1047 /* Intel i386 with OS/2 and emx-GCC: 1048 1049 well, not really a UNIX... */ 1050 1051 #ifdef __EMX__ 1052 #define ARCHSYSNAME "unknown-os2" 1053 #define DEFSMADE 1054 #define OPENRDMODE "rb" 1055 #define OPENWRMODE "wb" 1056 #define OPENUPMODE "rb+" 1057 #define IEEEFLOAT 1058 #define SLASHARGS 1059 #define PATHSEP '\\' 1060 #define SPATHSEP "\\" 1061 #define DIRSEP ';' 1062 #define SDIRSEP ";" 1063 #define DRSEP ':' 1064 #define SDRSEP ":" 1065 #define NULLDEV "NUL" 1066 typedef signed char Integ8; 1067 typedef unsigned char Card8; 1068 typedef signed short Integ16; 1069 typedef unsigned short Card16; 1070 #define HAS16 1071 typedef signed int Integ32; 1072 #define PRIInteg32 "d" 1073 typedef unsigned int Card32; 1074 typedef signed long long Integ64; 1075 typedef unsigned long long Card64; 1076 #define HAS64 1077 #define OS2_NLS 1078 #endif 1079 1080 /*---------------------------------------------------------------------------*/ 1081 /* Intel i386 with OS/2 and IBMC: 1082 1083 well, not really a UNIX... */ 1084 1085 #ifdef __IBMC__ 1086 #define DEFSMADE 1087 #define NODUP 1088 #define OPENRDMODE "rb" 1089 #define OPENWRMODE "wb" 1090 #define OPENUPMODE "rb+" 1091 #define IEEEFLOAT 1092 #define SLASHARGS 1093 #define PATHSEP '\\' 1094 #define SPATHSEP "\\" 1095 #define DRSEP ':' 1096 #define SDRSEP ":" 1097 #define NULLDEV "NUL" 1098 typedef signed char Integ8; 1099 typedef unsigned char Card8; 1100 typedef signed short Integ16; 1101 typedef unsigned short Card16; 1102 #define HAS16 1103 typedef signed int Integ32; 1104 #define PRIInteg32 "d" 1105 typedef unsigned int Card32; 1106 #define NOLONGLONG 1107 #define OS2_NLS 1108 #endif 1109 1110 /*---------------------------------------------------------------------------*/ 1111 /* Intel x86 with MS-DOS and Borland-C: 1112 1113 well, not really a UNIX... 1114 assure we get a usable memory model */ 1115 1116 #ifdef __MSDOS__ 1117 #ifdef __TURBOC__ 1118 #ifndef __LARGE__ 1119 #error Wrong memory model - use large! 1120 #endif 1121 #undef ARCHPRNAME 1122 #ifdef __DPMI16__ 1123 #define ARCHPRNAME "i286" 1124 #define ARCHSYSNAME "unknown-dpmi" 1125 #else 1126 #define ARCHPRNAME "i86" 1127 #define ARCHSYSNAME "unknown-msdos" 1128 #endif 1129 #define CKMALLOC 1130 #define HEAPRESERVE 4096 1131 #define DEFSMADE 1132 #define OPENRDMODE "rb" 1133 #define OPENWRMODE "wb" 1134 #define OPENUPMODE "rb+" 1135 #define IEEEFLOAT 1136 #define SLASHARGS 1137 #define PATHSEP '\\' 1138 #define SPATHSEP "\\" 1139 #define DIRSEP ';' 1140 #define SDIRSEP ";" 1141 #define DRSEP ':' 1142 #define SDRSEP ":" 1143 #define NULLDEV "NUL" 1144 typedef signed char Integ8; 1145 typedef unsigned char Card8; 1146 typedef signed short Integ16; 1147 typedef unsigned short Card16; 1148 #define HAS16 1149 typedef signed long Integ32; 1150 #define PRIInteg32 "ld" 1151 typedef unsigned long Card32; 1152 #define NOLONGLONG 1153 #define DOS_NLS 1154 #define __PROTOS__ 1155 #undef UNUSED 1156 #define UNUSED(x) (void)x 1157 #endif 1158 #endif 1159 1160 #endif /* __i386 */ 1161 1162 1163 /*===========================================================================*/ 1164 /* Intel x86_64 platforms */ 1165 1166 #if (defined __k8__) || (defined __x86_64) || (defined __x86_64__) 1167 1168 #define ARCHPRNAME "x86_64" 1169 1170 /*---------------------------------------------------------------------------*/ 1171 /* x86-64/amd64 with Linux/FreeBSD, OSX and GCC: 1172 1173 Principally, a normal *NIX. */ 1174 1175 #if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) 1176 1177 /* no long long data type if C89 is used */ 1178 1179 #if (defined __STDC__) && (!defined __STDC_VERSION__) 1180 # define NOLONGLONG 1181 #endif 1182 1183 #ifdef __linux__ 1184 #define ARCHSYSNAME "unknown-linux" 1185 #elif defined __FreeBSD__ 1186 #define ARCHSYSNAME "unknown-freebsd" 1187 #else 1188 #define ARCHSYSNAME "apple-osx" 1189 #endif 1190 1191 #define DEFSMADE 1192 #define OPENRDMODE "r" 1193 #define OPENWRMODE "w" 1194 #define OPENUPMODE "r+" 1195 #define IEEEFLOAT 1196 typedef signed char Integ8; 1197 typedef unsigned char Card8; 1198 typedef signed short Integ16; 1199 typedef unsigned short Card16; 1200 #define HAS16 1201 typedef signed int Integ32; 1202 #define PRIInteg32 "d" 1203 typedef unsigned int Card32; 1204 typedef signed long Integ64; 1205 typedef unsigned long Card64; 1206 #define HAS64 1207 #define LOCALE_NLS 1208 1209 #endif /* __linux__ || __FreeBSD__ || __APPLE__ */ 1210 1211 /*---------------------------------------------------------------------------*/ 1212 /* Intel i386 with WIN32 and MinGW: 1213 1214 Well, not really a UNIX...note that in contrast to Unix-like systems, 1215 the size of 'long' remains 32 bit. One still has to use 'long long' to 1216 get 64 bits. */ 1217 1218 #ifdef _WIN32 1219 1220 /* no long long data type if C89 is used */ 1221 1222 #if (defined __STDC__) && (!defined __STDC_VERSION__) 1223 # define NOLONGLONG 1224 #endif 1225 1226 #define ARCHSYSNAME "unknown-win64" 1227 #define DEFSMADE 1228 #define OPENRDMODE "rb" 1229 #define OPENWRMODE "wb" 1230 #define OPENUPMODE "rb+" 1231 #define IEEEFLOAT 1232 #define SLASHARGS 1233 #define PATHSEP '\\' 1234 #define SPATHSEP "\\" 1235 #define DIRSEP ';' 1236 #define SDIRSEP ";" 1237 #define DRSEP ':' 1238 #define SDRSEP ":" 1239 #define NULLDEV "NUL" 1240 typedef signed char Integ8; 1241 typedef unsigned char Card8; 1242 typedef signed short Integ16; 1243 typedef unsigned short Card16; 1244 #define HAS16 1245 typedef signed int Integ32; 1246 #define PRIInteg32 "d" 1247 typedef unsigned int Card32; 1248 #ifndef NOLONGLONG 1249 typedef signed long long Integ64; 1250 typedef unsigned long long Card64; 1251 # define HAS64 1252 #endif 1253 #define NO_NLS 1254 1255 #endif /* _WIN32 */ 1256 1257 #endif /* __k8__ || __x86_64 || __x86_64__ */ 1258 1259 /*===========================================================================*/ 1260 /* ARM platform */ 1261 1262 #ifdef __arm 1263 1264 #define ARCHPRNAME "arm" 1265 1266 /*---------------------------------------------------------------------------*/ 1267 /* ARM linux with GCC */ 1268 1269 #ifdef __linux__ 1270 #define ARCHSYSNAME "unknown-linux-arm" 1271 #define DEFSMADE 1272 #define OPENRDMODE "r" 1273 #define OPENWRMODE "w" 1274 #define OPENUPMODE "r+" 1275 #define IEEEFLOAT 1276 typedef signed char Integ8; 1277 typedef unsigned char Card8; 1278 typedef signed short Integ16; 1279 typedef unsigned short Card16; 1280 #define HAS16 1281 typedef signed int Integ32; 1282 #define PRIInteg32 "d" 1283 typedef unsigned int Card32; 1284 typedef signed long long Integ64; 1285 typedef unsigned long long Card64; 1286 #define HAS64 1287 #define LOCALE_NLS 1288 #endif /* __linux__ */ 1289 1290 /*---------------------------------------------------------------------------*/ 1291 /* Psion PDA (ARM cpu) with SymbianOS Epoc32 rel.5 and installed epocemx-GCC: 1292 1293 well, not really a UNIX... */ 1294 1295 #ifdef __EPOC32__ 1296 1297 #ifdef __EPOCEMX__ 1298 #define ARCHSYSNAME "psion-epoc32-epocemx" 1299 #define DEFSMADE 1300 #define OPENRDMODE "r" 1301 #define OPENWRMODE "w" 1302 #define OPENUPMODE "r+" 1303 #define IEEEFLOAT 1304 typedef signed char Integ8; 1305 typedef unsigned char Card8; 1306 typedef signed short Integ16; 1307 typedef unsigned short Card16; 1308 #define HAS16 1309 typedef signed int Integ32; 1310 #define PRIInteg32 "d" 1311 typedef unsigned int Card32; 1312 typedef signed long long Integ64; 1313 typedef unsigned long long Card64; 1314 #define HAS64 1315 #define NO_NLS 1316 #endif /* __EPOCEMX__ */ 1317 1318 1319 #endif /* __EPOC32__ */ 1320 1321 #endif /* __arm */ 1322 1323 /*===========================================================================*/ 1324 /* Misc... */ 1325 1326 /*---------------------------------------------------------------------------*/ 1327 /* Just for curiosity, it won't work without 16 bit int's... */ 1328 1329 #ifdef _CRAYMPP 1330 #define OPENRDMODE "r" 1331 #define OPENWRMODE "w" 1332 #define OPENUPMODE "r+" 1333 #define IEEEFLOAT 1334 typedef signed char Integ8; 1335 typedef unsigned char Card8; 1336 typedef signed short Integ32; 1337 #define PRIInteg32 "d" 1338 typedef unsigned short Card32; 1339 typedef signed int Integ64; 1340 typedef unsigned int Card64; 1341 #define HAS64 1342 #define LOCALE_NLS 1343 #endif 1344 1345 /*===========================================================================*/ 1346 /* Post-Processing: check for definition, add defaults */ 1347 1348 1349 #ifdef DEFSMADE 1350 #ifndef PATHSEP 1351 #define PATHSEP '/' 1352 #define SPATHSEP "/" 1353 #define DIRSEP ':' 1354 #define SDIRSEP ":" 1355 #endif 1356 #ifndef NULLDEV 1357 #define NULLDEV "/dev/null" 1358 #endif 1359 #else 1360 #error "your platform so far is not included in AS's header files!" 1361 #error "please edit sysdefs.h!" 1362 #endif 1363 1364 #ifdef CKMALLOC 1365 #define malloc(s) ckmalloc(s) 1366 #define realloc(p,s) ckrealloc(p,s) 1367 1368 extern void *ckmalloc(size_t s); 1369 1370 extern void *ckrealloc(void *p, size_t s); 1371 #endif 1372 #endif /* _SYSDEFS_H */ 1373