1 /* Copyright (C) 2011-2013 Free Software Foundation, Inc. 2 Contributed by ARM Ltd. 3 4 This file is part of GCC. 5 6 GCC is free software; you can redistribute it and/or modify it 7 under the terms of the GNU General Public License as published 8 by the Free Software Foundation; either version 3, or (at your 9 option) any later version. 10 11 GCC is distributed in the hope that it will be useful, but WITHOUT 12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 14 License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GCC; see the file COPYING3. If not see 18 <http://www.gnu.org/licenses/>. */ 19 20 /* Definitions for option handling for AArch64. */ 21 22 #ifndef GCC_AARCH64_OPTS_H 23 #define GCC_AARCH64_OPTS_H 24 25 /* The various cores that implement AArch64. */ 26 enum aarch64_processor 27 { 28 #define AARCH64_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \ 29 IDENT, 30 #include "aarch64-cores.def" 31 #undef AARCH64_CORE 32 /* Used to indicate that no processor has been specified. */ 33 generic, 34 /* Used to mark the end of the processor table. */ 35 aarch64_none 36 }; 37 38 /* TLS types. */ 39 enum aarch64_tls_type { 40 TLS_TRADITIONAL, 41 TLS_DESCRIPTORS 42 }; 43 44 /* The code model defines the address generation strategy. 45 Most have a PIC and non-PIC variant. */ 46 enum aarch64_code_model { 47 /* Static code and data fit within a 1MB region. 48 Not fully implemented, mostly treated as SMALL. */ 49 AARCH64_CMODEL_TINY, 50 /* Static code, data and GOT/PLT fit within a 1MB region. 51 Not fully implemented, mostly treated as SMALL_PIC. */ 52 AARCH64_CMODEL_TINY_PIC, 53 /* Static code and data fit within a 4GB region. 54 The default non-PIC code model. */ 55 AARCH64_CMODEL_SMALL, 56 /* Static code, data and GOT/PLT fit within a 4GB region. 57 The default PIC code model. */ 58 AARCH64_CMODEL_SMALL_PIC, 59 /* No assumptions about addresses of code and data. 60 The PIC variant is not yet implemented. */ 61 AARCH64_CMODEL_LARGE 62 }; 63 64 #endif 65