diff options
author | echristo <echristo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-09 00:27:47 +0000 |
---|---|---|
committer | echristo <echristo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-09-09 00:27:47 +0000 |
commit | 3ebc7dec024ba8506b36236d5e7f109e66726aab (patch) | |
tree | 6362c5766828bc7e24a35770180c840450d9e70d /gcc/config/darwin-64.c | |
parent | b283e667784eab3cf18478ddf7ae4cc4ffae998c (diff) | |
download | gcc-3ebc7dec024ba8506b36236d5e7f109e66726aab.tar.gz |
2006-09-08 Eric Christopher <echristo@apple.com>
* config.gcc (i?86-*-darwin): Add 64-bit HWI support.
* config/t-slibgcc-darwin: Support x86_64 multilib.
* config/i386/i386.h (JUMP_TABLES_IN_TEXT_SECTION):
Return 1 for x86_64-darwin.
* config/i386/t-darwin: Add m64 multilib.
(LIB2_SIDITI_CONV_FUNCS): Use.
(LIB2FUNCS_EXTRA): Ditto.
* config/i386/darwin.h: Support x86_64.
* config/i386/i386.c (override_options): Turn on flag_pic
for x86_64-darwin. Disable flag_omit_pointer.
(get_pc_thunk_name): Assert !TARGET_64BIT.
(legitimate_address_p): Disable machopic addressing for
x86_64.
(legitimize_pic_address): Ditto.
(ix86_expand_move): Ditto.
(ix86_expand_call): Ditto.
(machopic_output_stub): Ditto.
* config/darwin.c (machopic_select_section): Support literal16.
(machopic_select_rtx_section): Ditto.
* config/darwin-sections.def: Ditto.
* config/darwin-64.c: New.
2006-09-08 Eric Christopher <echristo@apple.com>
* gcc.target/i386/20060512-3.c: Run test on ilp32 only.
* gcc.target/i386/memcpy-1.c: Ditto.
* gcc.target/i386/asm-1.c: Ditto.
* gcc.target/i386/20060512-4.c: Ditto.
* gcc.target/i386/compress-float-387.c: Ditto.
* gcc.target/i386/20060512-1.c: Ditto.
* gcc.target/i386/compress-float-sse.c: Ditto.
* gcc.target/i386/20060512-2.c: Ditto.
* gcc.target/i386/compress-float-sse-pic.c: Ditto.
* gcc.target/i386/stack-prot-kernel.c: Ditto.
* gcc.target/i386/compress-float-387-pic.c: Ditto.
* gcc.dg/pr26449.c: Ditto.
* gcc.dg/attr-ms_struct-2.c: Ditto.
* gcc.dg/attr-ms_struct-1.c: Ditto.
* gcc.misc-tests/linkage.exp: Fix 64-bit darwin support.
2006-09-08 Eric Christopher <echristo@apple.com>
* configure.ac: Add 64-bit HWI support for i?86-darwin.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116795 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/darwin-64.c')
-rw-r--r-- | gcc/config/darwin-64.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/gcc/config/darwin-64.c b/gcc/config/darwin-64.c new file mode 100644 index 00000000000..33094e30785 --- /dev/null +++ b/gcc/config/darwin-64.c @@ -0,0 +1,77 @@ +/* Functions shipped in the ppc64 and x86_64 version of libgcc_s.1.dylib + in older Mac OS X versions, preserved for backwards compatibility. + Copyright (C) 2006 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file into combinations with other programs, +and to distribute those combinations without any restriction coming +from the use of this file. (The General Public License restrictions +do apply in other respects; for example, they cover modification of +the file, and distribution when not linked into a combine +executable.) + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to the Free +Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301, USA. */ + +#if defined (__ppc64__) || defined (__x86_64__) +/* Many of these functions have probably never been used by anyone + anywhere on these targets, but it's hard to prove this, so they're defined + here. None are actually necessary, as demonstrated below by defining + each function using the operation it implements. */ + +typedef long DI; +typedef unsigned long uDI; +typedef int SI; +typedef unsigned int uSI; +typedef int word_type __attribute__ ((mode (__word__))); + +DI __ashldi3 (DI x, word_type c); +DI __ashrdi3 (DI x, word_type c); +int __clzsi2 (uSI x); +word_type __cmpdi2 (DI x, DI y); +int __ctzsi2 (uSI x); +DI __divdi3 (DI x, DI y); +uDI __lshrdi3 (uDI x, word_type c); +DI __moddi3 (DI x, DI y); +DI __muldi3 (DI x, DI y); +DI __negdi2 (DI x); +int __paritysi2 (uSI x); +int __popcountsi2 (uSI x); +word_type __ucmpdi2 (uDI x, uDI y); +uDI __udivdi3 (uDI x, uDI y); +uDI __udivmoddi4 (uDI x, uDI y, uDI *r); +uDI __umoddi3 (uDI x, uDI y); + +DI __ashldi3 (DI x, word_type c) { return x << c; } +DI __ashrdi3 (DI x, word_type c) { return x >> c; } +int __clzsi2 (uSI x) { return __builtin_clz (x); } +word_type __cmpdi2 (DI x, DI y) { return x < y ? 0 : x == y ? 1 : 2; } +int __ctzsi2 (uSI x) { return __builtin_ctz (x); } +DI __divdi3 (DI x, DI y) { return x / y; } +uDI __lshrdi3 (uDI x, word_type c) { return x >> c; } +DI __moddi3 (DI x, DI y) { return x % y; } +DI __muldi3 (DI x, DI y) { return x * y; } +DI __negdi2 (DI x) { return -x; } +int __paritysi2 (uSI x) { return __builtin_parity (x); } +int __popcountsi2 (uSI x) { return __builtin_popcount (x); } +word_type __ucmpdi2 (uDI x, uDI y) { return x < y ? 0 : x == y ? 1 : 2; } +uDI __udivdi3 (uDI x, uDI y) { return x / y; } +uDI __udivmoddi4 (uDI x, uDI y, uDI *r) { *r = x % y; return x / y; } +uDI __umoddi3 (uDI x, uDI y) { return x % y; } + +#endif /* __ppc64__ || __x86_64__ */ |