diff options
author | 2005-01-09 19:02:54 +0000 | |
---|---|---|
committer | 2005-01-09 19:02:54 +0000 | |
commit | a524395a64a152d9733010629ea2fc2231814154 (patch) | |
tree | 5e919b0c339fed16a7096966e70b6d42cbf976ea /sys-devel | |
parent | changing back to virtual. if this causes problems, then please look at changi... (diff) | |
download | historical-a524395a64a152d9733010629ea2fc2231814154.tar.gz historical-a524395a64a152d9733010629ea2fc2231814154.tar.bz2 historical-a524395a64a152d9733010629ea2fc2231814154.zip |
Added patch that introduces cache barriers to be used when building SGI IP28 kernels. Only enabled by passing -mip28-cache-barriers. Only patched in if USE ip28 is set, so non-ip28 mips systems will never see this option.
Diffstat (limited to 'sys-devel')
-rw-r--r-- | sys-devel/gcc/ChangeLog | 8 | ||||
-rw-r--r-- | sys-devel/gcc/Manifest | 97 | ||||
-rw-r--r-- | sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers.patch | 392 | ||||
-rw-r--r-- | sys-devel/gcc/gcc-3.4.3-r1.ebuild | 40 |
4 files changed, 472 insertions, 65 deletions
diff --git a/sys-devel/gcc/ChangeLog b/sys-devel/gcc/ChangeLog index 652321893629..efdc6a2c2b4b 100644 --- a/sys-devel/gcc/ChangeLog +++ b/sys-devel/gcc/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for sys-devel/gcc # Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/ChangeLog,v 1.365 2005/01/07 01:47:41 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/ChangeLog,v 1.366 2005/01/09 19:02:53 kumba Exp $ + + 09 Jan 2005; Joshua Kinard <kumba@gentoo.org> + +files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers.patch, gcc-3.4.3-r1.ebuild: + Added patch that introduces cache barriers to be used when building SGI IP28 + kernels. Only enabled by passing -mip28-cache-barriers. Only patched in if USE + ip28 is set, so non-ip28 mips systems will never see this option. 06 Jan 2005; Mike Frysinger <vapier@gentoo.org> gcc-3.3.5-r1.ebuild: Update pie patches to fix order #72665. diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest index 2b580baf4a56..c7c55496187f 100644 --- a/sys-devel/gcc/Manifest +++ b/sys-devel/gcc/Manifest @@ -1,10 +1,9 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -MD5 6349445e53ce88c6e37b0e976298e9bc ChangeLog 76285 +MD5 1e1f16a6323039d80ce92fab4eabefad ChangeLog 76639 MD5 1cc192aba411ac83ab6905c2d3c1cb2d gcc-2.95.3-r8.ebuild 8432 MD5 4ae030bd0b7fd0ef5c859b8ca2d32436 gcc-3.2.3-r4.ebuild 19729 +MD5 a19b796e70f4c208766e6c3783ba0698 gcc-3.4.3-r1.ebuild 16226 MD5 b722492a21537c1ec3a15acb8f11a387 gcc-3.3.2-r2.ebuild 17859 +MD5 c95b8ce242223591493672f9540b387a gcc-3.3.5-r1.ebuild 12485 MD5 e8b561dbb0d86dcee9ca99b835813d92 gcc-3.3.2-r5.ebuild 21183 MD5 778e3f9f0a84fb7e8c477880027fe39d gcc-3.3.2-r7.ebuild 21588 MD5 3384a275321a4ed8869bfb2d740eb74b gcc-3.3.2.ebuild 16693 @@ -12,47 +11,35 @@ MD5 9480816d969717d52d56af9da7b2df12 gcc-3.3.3-r3.ebuild 23403 MD5 521e5a311811e8eb920198e20a7c433f gcc-3.3.3-r6.ebuild 24793 MD5 5b214acf30ab089dfd7d79f8115bbdd6 gcc-3.3.4-r1.ebuild 24684 MD5 32a49c379c995aa266bd40448f16480c gcc-3.3.4-r2.ebuild 24489 -MD5 c95b8ce242223591493672f9540b387a gcc-3.3.5-r1.ebuild 12485 MD5 8d5444efd838da5c75c82e64e2625dfd gcc-3.4.1-r3.ebuild 31269 MD5 1fef307d644a7f84c935236c8b6be083 gcc-3.4.2-r2.ebuild 13486 -MD5 e9b2376ce1618d16fe45f39f96d5fc58 gcc-3.4.3-r1.ebuild 15352 MD5 d81ef073d429d7ed3d5393ecffc4e610 gcc-3.4.3.ebuild 13254 MD5 567094e03359ffc1c95af7356395228d metadata.xml 162 MD5 f7e7042c2ddf66e344b30cbc66ebaf73 files/cc 24 MD5 80d122265d3062847a4a1b161abe1d26 files/cpp 24 MD5 3213bd50acdbbd71ce7dd3e40710e30e files/digest-gcc-2.95.3-r8 64 -MD5 5a9db19cd5ad6ad16b0f838d525d842a files/digest-gcc-3.3.3-r3 522 -MD5 9b68e03bb1a6a1494399c8a6537bb766 files/digest-gcc-3.4.3-r1 527 MD5 a3edf5e9d8bb500178f8dd29c1f9eadd files/digest-gcc-3.3.5-r1 442 -MD5 3fd5a29d44b89f4fb220fccaa968fc05 files/digest-gcc-3.3.3-r6 442 -MD5 d197c7ddd1a614b89bddbc3babb31c3b files/digest-gcc-3.4.3 442 -MD5 69687aac826654ad375b7eae45a01e0b files/digest-gcc-3.4.2-r2 443 -MD5 6df16eb92245a931ecfc4cbcc73c84cf files/digest-gcc-3.3.4-r1 442 +MD5 40e6872c09149a81973f01a78c80bbb7 files/digest-gcc-3.2.3-r4 279 +MD5 9b68e03bb1a6a1494399c8a6537bb766 files/digest-gcc-3.4.3-r1 527 MD5 cf81ae4b2da79c34a005da1182c40134 files/digest-gcc-3.3.2 130 MD5 f48105f24e5c714530e66a94aa56d615 files/digest-gcc-3.3.2-r2 361 +MD5 01c41c9e6857eb40d402f2acb2bd96f9 files/digest-gcc-3.3.2-r5 361 +MD5 e58b6c1f3122b79a5d0d273acc3c008c files/digest-gcc-3.3.2-r7 361 +MD5 5a9db19cd5ad6ad16b0f838d525d842a files/digest-gcc-3.3.3-r3 522 +MD5 3fd5a29d44b89f4fb220fccaa968fc05 files/digest-gcc-3.3.3-r6 442 +MD5 6df16eb92245a931ecfc4cbcc73c84cf files/digest-gcc-3.3.4-r1 442 +MD5 6df16eb92245a931ecfc4cbcc73c84cf files/digest-gcc-3.3.4-r2 442 +MD5 c6ea8a92bac6d2638c54c011f98bc5b8 files/digest-gcc-3.4.1-r3 442 +MD5 69687aac826654ad375b7eae45a01e0b files/digest-gcc-3.4.2-r2 443 +MD5 d197c7ddd1a614b89bddbc3babb31c3b files/digest-gcc-3.4.3 442 MD5 9bb4a999eb75c9e3eadab9aa71e91879 files/fix_libtool_files.sh 1731 MD5 60e02a7ee2f579ac72ab223679d81e7a files/gcc-spec-env.patch 819 -MD5 ea2cf3df0d89a26d5fdc1a531176e395 files/pro-police-docs.patch 3287 MD5 8baffb486c75efe253bd2daa88daa7d6 files/gcc331_use_multilib.amd64.patch 352 MD5 e3193bdffb435b77a21bfb504ff6f591 files/mkinfodir 7324 +MD5 ea2cf3df0d89a26d5fdc1a531176e395 files/pro-police-docs.patch 3287 MD5 07b57d62aa1a8cd4d1cd37984ebe2053 files/scan_libgcc_linked_ssp.sh 861 -MD5 01c41c9e6857eb40d402f2acb2bd96f9 files/digest-gcc-3.3.2-r5 361 -MD5 6df16eb92245a931ecfc4cbcc73c84cf files/digest-gcc-3.3.4-r2 442 -MD5 40e6872c09149a81973f01a78c80bbb7 files/digest-gcc-3.2.3-r4 279 -MD5 e58b6c1f3122b79a5d0d273acc3c008c files/digest-gcc-3.3.2-r7 361 -MD5 c6ea8a92bac6d2638c54c011f98bc5b8 files/digest-gcc-3.4.1-r3 442 MD5 b1a242694f56184cbcdd40ba25800d50 files/2.95.3/gcc-2.95.3-alpha.diff 14345 MD5 523970c128b929fe7c7cf36508ebd1d5 files/2.95.3/gcc-2.95.3-new-atexit.diff 13604 -MD5 27120401d2355e5d959b8d2d55eba310 files/3.3.4/gcc334-gentoo-branding.patch 876 -MD5 8c779f2dca6ab1b5b95e2ee211d26c8c files/3.3.4/gcc-3.3.4-spec-env.patch 786 -MD5 5fb5b49f3f16cc9e7e27e582c92ffa2f files/3.3.4/libffi-without-libgcj.patch 890 -MD5 86ae592deb82c4564eb61f770fe5f8a7 files/3.4.1/gcc-3.4.1-gentoo-branding.patch 759 -MD5 df06b1cf70425c78e2e59136ed372ab4 files/3.4.1/gcc341-ppc64-mozilla-ICE-fix.patch 729 -MD5 14fec2000fc63536d4cf22195e88e14f files/3.4.1/gcc-3.4.1-r2-gentoo-branding.patch 781 -MD5 cd770c23ece7458db5e6c5067f262ce0 files/3.4.1/gcc-3.4.1-glibc-is-native.patch 760 -MD5 7cb2138ac2df6f8674d19974e966a45b files/3.4.1/gcc-3.4.1-mips-n32only.patch 614 -MD5 aa8e15a63d797df37bbd4e489ed0267f files/3.4.1/gcc-3.4.1-mips-n64only.patch 614 -MD5 97d7409ba5038bea85f9cabe023e28a6 files/3.4.1/gcc-3.4.1-spec-env.patch 755 MD5 3f6d070c2a4a899e7d879fdb55eecba4 files/3.4.3/libffi-nogcj-lib-path-fix.patch 1691 MD5 007c62d92efd70fd44c4d2e6a326036b files/3.4.3/libffi-without-libgcj.patch 1658 MD5 7434140298091f759eba5e9706264130 files/3.4.3/libssp.patch 2029 @@ -81,41 +68,45 @@ MD5 088e0807e677010cafe4e590e8711be1 files/3.3/gcc33-no-multilib-amd64.patch 343 MD5 453122edf63d75cca3a6c56a6dac45b0 files/3.3/gcc33-propolice-version.patch 570 MD5 d3e53318166d71a05d2b51bd44502270 files/3.3.1/gcc331-gentoo-branding.patch 874 MD5 b398b7415b93423ff04952c6e69bdb4d files/3.3.1/gcc331-pp-fixup.patch 407 -MD5 d9ae122db2768f8e504dfef256d4991f files/3.3.2/gcc332-gentoo-branding.patch 874 MD5 9e7ed6184a1cdcb69db29f1de26c2d18 files/3.3.2/gcc332-altivec-fix.patch 1607 -MD5 40eea3a959b76abb57fc629c029a3427 files/awk/fixlafiles.awk 7753 -MD5 c672adb59a1f452475ab0a864b9d1bd1 files/awk/scanforssp.awk 5830 +MD5 d9ae122db2768f8e504dfef256d4991f files/3.3.2/gcc332-gentoo-branding.patch 874 +MD5 66df5567226338b7504bbd3c25cea92c files/3.3.3/gcc-3.3.3-libiberty-pic.patch 370 +MD5 ee700275f341541af37d56bd15dcf863 files/3.3.3/gcc-3.3.3-norelro.patch 606 +MD5 ff6d7b5082c5e39fab8a5d8932c1a8b7 files/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch 461 +MD5 308a0e53f03e9cb74b3d12c2633cbee2 files/3.3.3/gcc-uclibc-3.3-loop.patch 433 +MD5 9ba0bd0b103cf9535927ad7c482fe780 files/3.3.3/gcc333-debian-arm-getoff.patch 3501 +MD5 25eda9981106a55c413d1df3d3a87db5 files/3.3.3/gcc333-debian-arm-ldm.patch 3383 MD5 cd87c02e4896f47bf6029eef0dc29468 files/3.3.3/gcc333-gentoo-branding.patch 874 +MD5 e5812da37c1862908a29cdae004c4e52 files/3.3.3/gcc333-pr15693.patch 3927 +MD5 bb0078854a778b2a279cfb15d8933c29 files/3.3.3/gcc333-ssp-3.3.2_1-fixup.patch 2598 MD5 0e8d94bbc14fbb3fbad1df4f404b39ef files/3.3.3/gcc333-ssp-3.3_7-fixup.patch 2616 MD5 4b249bff27ab6328436e6289ac9f9cfc files/3.3.3/gcc333_pre20040215-gentoo-branding.patch 839 MD5 f317331e0b196ca455ca9554479cd8eb files/3.3.3/gcc333_pre20040322-gentoo-branding.patch 817 MD5 43c60f04779324d74d3aac52224bed95 files/3.3.3/gcc333_pre20040408-gentoo-branding.patch 820 MD5 3210d5fd70806c44d4426c3dceebd480 files/3.3.3/gcc333_pre20040408-stack-size.patch 653 MD5 43c60f04779324d74d3aac52224bed95 files/3.3.3/gcc333_pre20040426-gentoo-branding.patch 820 -MD5 9ba0bd0b103cf9535927ad7c482fe780 files/3.3.3/gcc333-debian-arm-getoff.patch 3501 -MD5 25eda9981106a55c413d1df3d3a87db5 files/3.3.3/gcc333-debian-arm-ldm.patch 3383 -MD5 ff6d7b5082c5e39fab8a5d8932c1a8b7 files/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch 461 -MD5 308a0e53f03e9cb74b3d12c2633cbee2 files/3.3.3/gcc-uclibc-3.3-loop.patch 433 -MD5 bb0078854a778b2a279cfb15d8933c29 files/3.3.3/gcc333-ssp-3.3.2_1-fixup.patch 2598 -MD5 66df5567226338b7504bbd3c25cea92c files/3.3.3/gcc-3.3.3-libiberty-pic.patch 370 -MD5 ee700275f341541af37d56bd15dcf863 files/3.3.3/gcc-3.3.3-norelro.patch 606 -MD5 e5812da37c1862908a29cdae004c4e52 files/3.3.3/gcc333-pr15693.patch 3927 -MD5 b2922cfe76692e7d2b373a0a255f405e files/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch 14248 -MD5 2970ce4d26f78bbb7e76f1d41a177bfb files/3.4.2/gcc34-fix-sse2_pinsrw.patch 901 -MD5 2c1ce849de55d8c81af4e081dbb2f5e4 files/3.4.2/gcc34-m32-no-sse2.patch 1058 -MD5 a720c913b78bcfbd7f63319130fadd4a files/3.4.2/810-arm-bigendian-uclibc.patch 1139 +MD5 8c779f2dca6ab1b5b95e2ee211d26c8c files/3.3.4/gcc-3.3.4-spec-env.patch 786 +MD5 27120401d2355e5d959b8d2d55eba310 files/3.3.4/gcc334-gentoo-branding.patch 876 +MD5 5fb5b49f3f16cc9e7e27e582c92ffa2f files/3.3.4/libffi-without-libgcj.patch 890 +MD5 17b3190d64e34ed7709d022b326d08ae files/3.4.0/gcc-3.4.0-cc1-no-stack-protector.patch 563 +MD5 66edf32babf498517ca56fa44c901f26 files/3.4.0/gcc-3.4.0-move-propolice-into-glibc.patch 894 MD5 06580106a905e8fa2ff23aa190f9d82c files/3.4.0/gcc-3.4.0-r6-gentoo-branding.patch 781 MD5 c7ed491e4bcee6cae89067d4e1c899a8 files/3.4.0/gcc34-ia64-lib64.patch 1395 -MD5 66edf32babf498517ca56fa44c901f26 files/3.4.0/gcc-3.4.0-move-propolice-into-glibc.patch 894 -MD5 31470a0e018eb2cdfe68c71039ede80f files/3.4.0/gcc34-multi32-hack.patch 2445 MD5 c919e0a2cd429d0121b6133c1b4e41a6 files/3.4.0/gcc34-ice-hack.patch 8605 +MD5 31470a0e018eb2cdfe68c71039ede80f files/3.4.0/gcc34-multi32-hack.patch 2445 MD5 bae93db3186aa0fc25d659b7799ef499 files/3.4.0/gcc34-ppc64-m32-m64-multilib-only.patch 825 -MD5 17b3190d64e34ed7709d022b326d08ae files/3.4.0/gcc-3.4.0-cc1-no-stack-protector.patch 563 MD5 4edccdf0b4f6dbbc9f7bc9370c255e0c files/3.4.0/gcc34-reiser4-fix.patch 587 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.9.14 (GNU/Linux) - -iD8DBQFB3qwxroRuSHgZdywRAhWBAKCO+yrCBI+mJMy6JXobEFrGuvQ85wCePb6c -pnyPJPLm3v9EyKWFtkeFGFY= -=THlo ------END PGP SIGNATURE----- +MD5 86ae592deb82c4564eb61f770fe5f8a7 files/3.4.1/gcc-3.4.1-gentoo-branding.patch 759 +MD5 cd770c23ece7458db5e6c5067f262ce0 files/3.4.1/gcc-3.4.1-glibc-is-native.patch 760 +MD5 7cb2138ac2df6f8674d19974e966a45b files/3.4.1/gcc-3.4.1-mips-n32only.patch 614 +MD5 aa8e15a63d797df37bbd4e489ed0267f files/3.4.1/gcc-3.4.1-mips-n64only.patch 614 +MD5 14fec2000fc63536d4cf22195e88e14f files/3.4.1/gcc-3.4.1-r2-gentoo-branding.patch 781 +MD5 97d7409ba5038bea85f9cabe023e28a6 files/3.4.1/gcc-3.4.1-spec-env.patch 755 +MD5 df06b1cf70425c78e2e59136ed372ab4 files/3.4.1/gcc341-ppc64-mozilla-ICE-fix.patch 729 +MD5 a720c913b78bcfbd7f63319130fadd4a files/3.4.2/810-arm-bigendian-uclibc.patch 1139 +MD5 b2922cfe76692e7d2b373a0a255f405e files/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch 14248 +MD5 2970ce4d26f78bbb7e76f1d41a177bfb files/3.4.2/gcc34-fix-sse2_pinsrw.patch 901 +MD5 2c1ce849de55d8c81af4e081dbb2f5e4 files/3.4.2/gcc34-m32-no-sse2.patch 1058 +MD5 f3a1b668077c6486c542dcef1cdd9672 files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers.patch 12545 +MD5 40eea3a959b76abb57fc629c029a3427 files/awk/fixlafiles.awk 7753 +MD5 c672adb59a1f452475ab0a864b9d1bd1 files/awk/scanforssp.awk 5830 diff --git a/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers.patch b/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers.patch new file mode 100644 index 000000000000..38b183288ba9 --- /dev/null +++ b/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers.patch @@ -0,0 +1,392 @@ +--- gcc-3.4.2/gcc/config/mips/mips.h Thu Jul 15 02:42:47 2004 ++++ gcc-3.4.2/gcc/config/mips/mips.h Sat Sep 18 00:41:48 2004 +@@ -122,6 +122,7 @@ + extern const char *mips_isa_string; /* for -mips{1,2,3,4} */ + extern const char *mips_abi_string; /* for -mabi={32,n32,64} */ + extern const char *mips_cache_flush_func;/* for -mflush-func= and -mno-flush-func */ ++extern const char *mips_ip28_cache_barrier;/* for -mip28-cache-barrier */ + extern int mips_string_length; /* length of strings for mips16 */ + extern const struct mips_cpu_info mips_cpu_info_table[]; + extern const struct mips_cpu_info *mips_arch_info; +@@ -333,6 +334,7 @@ + #define TARGET_MIPS9000 (mips_arch == PROCESSOR_R9000) + #define TARGET_SB1 (mips_arch == PROCESSOR_SB1) + #define TARGET_SR71K (mips_arch == PROCESSOR_SR71000) ++#define TARGET_IP28 (mips_ip28_cache_barrier != 0) + + /* Scheduling target defines. */ + #define TUNE_MIPS3000 (mips_tune == PROCESSOR_R3000) +@@ -752,6 +754,8 @@ + N_("Don't call any cache flush functions"), 0}, \ + { "flush-func=", &mips_cache_flush_func, \ + N_("Specify cache flush function"), 0}, \ ++ { "ip28-cache-barrier", &mips_ip28_cache_barrier, \ ++ N_("Generate special cache barriers for SGI Indigo2 R10k"), 0}, \ + } + + /* This is meant to be redefined in the host dependent files. */ +@@ -3448,3 +3452,11 @@ + " TEXT_SECTION_ASM_OP); + #endif + #endif ++ ++#define ASM_OUTPUT_R10K_CACHE_BARRIER(STREAM) \ ++ fprintf (STREAM, "\tcache 0x14,0($sp)\t%s Cache Barrier\n", ASM_COMMENT_START) ++ ++/* ++ * mips.h Thu Jul 15 02:42:47 2004 ++ * mips.h Fri Sep 17 23:18:19 2004 ip28 ++ */ +--- gcc-3.4.2/gcc/config/mips/mips.c Wed Jul 7 21:21:10 2004 ++++ gcc-3.4.2/gcc/config/mips/mips.c Fri Sep 17 23:33:44 2004 +@@ -502,6 +502,11 @@ + + const char *mips_cache_flush_func = CACHE_FLUSH_FUNC; + ++/* Nonzero means generate special cache barriers to inhibit speculative ++ stores which might endanger cache coherency or reference invalid ++ addresses (especially on SGI's Indigo2 R10k (IP28)). */ ++const char *mips_ip28_cache_barrier; ++ + /* If TRUE, we split addresses into their high and low parts in the RTL. */ + int mips_split_addresses; + +@@ -9676,3 +9681,7 @@ + #endif /* TARGET_IRIX */ + + #include "gt-mips.h" ++/* ++ * mips.c Wed Jul 7 21:21:10 2004 ++ * mips.c Fri Sep 17 23:25:53 2004 ip28 ++ */ +--- gcc-3.4.2/gcc/final.c Sun Jan 18 23:39:57 2004 ++++ gcc-3.4.2/gcc/final.c Fri Nov 19 00:40:50 2004 +@@ -146,6 +146,13 @@ + + static rtx last_ignored_compare = 0; + ++/* Flag indicating this insn is the start of a new basic block. */ ++ ++#define NEW_BLOCK_LABEL 1 ++#define NEW_BLOCK_BRANCH 2 ++ ++static int new_block = NEW_BLOCK_LABEL; ++ + /* Assign a unique number to each insn that is output. + This can be used to generate unique local labels. */ + +@@ -235,6 +242,7 @@ + #ifdef HAVE_ATTR_length + static int align_fuzz (rtx, rtx, int, unsigned); + #endif ++static int output_store_cache_barrier (FILE *, rtx); + + /* Initialize data in final at the beginning of a compilation. */ + +@@ -1505,6 +1513,7 @@ + int seen = 0; + + last_ignored_compare = 0; ++ new_block = NEW_BLOCK_LABEL; + + #ifdef SDB_DEBUGGING_INFO + /* When producing SDB debugging info, delete troublesome line number +@@ -1571,6 +1580,7 @@ + + insn = final_scan_insn (insn, file, optimize, prescan, 0, &seen); + } ++ new_block = 0; + } + + const char * +@@ -1851,6 +1861,7 @@ + #endif + if (prescan > 0) + break; ++ new_block = NEW_BLOCK_LABEL; + + if (LABEL_NAME (insn)) + (*debug_hooks->label) (insn); +@@ -2009,6 +2020,26 @@ + + break; + } ++ ++#ifdef TARGET_IP28 ++ if (new_block) ++ { ++ /* .reorder: not really in the branch-delay-slot. */ ++ if (! set_noreorder) ++ new_block = NEW_BLOCK_LABEL; ++ ++ if (new_block == NEW_BLOCK_BRANCH) ++ /* Not yet, only *after* the branch-delay-slot ! */ ++ new_block = NEW_BLOCK_LABEL; ++ else ++ { ++ if (TARGET_IP28) ++ output_store_cache_barrier (file, insn); ++ new_block = 0; ++ } ++ } ++#endif ++ + /* Output this line note if it is the first or the last line + note in a row. */ + if (notice_source_line (insn)) +@@ -2132,8 +2163,29 @@ + clobbered by the function. */ + if (GET_CODE (XVECEXP (body, 0, 0)) == CALL_INSN) + { ++#ifdef TARGET_IP28 ++ if (TARGET_IP28) ++ new_block = NEW_BLOCK_LABEL; ++#endif + CC_STATUS_INIT; + } ++#ifdef TARGET_IP28 ++ /* Following a conditional branch sequence, we have a new basic ++ block. */ ++ if (TARGET_IP28) ++ { ++ rtx insn = XVECEXP (body, 0, 0); ++ rtx body = PATTERN (insn); ++ ++ if ((GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET ++ && GET_CODE (SET_SRC (body)) != LABEL_REF) ++ || (GET_CODE (insn) == JUMP_INSN ++ && GET_CODE (body) == PARALLEL ++ && GET_CODE (XVECEXP (body, 0, 0)) == SET ++ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF)) ++ new_block = NEW_BLOCK_LABEL; ++ } ++#endif + break; + } + +@@ -2188,6 +2240,20 @@ + } + #endif + ++#ifdef TARGET_IP28 ++ /* Following a conditional branch, we have a new basic block. ++ But if we are inside a sequence, the new block starts after the ++ last insn of the sequence. */ ++ if (TARGET_IP28 && final_sequence == 0 ++ && (GET_CODE (insn) == CALL_INSN ++ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET ++ && GET_CODE (SET_SRC (body)) != LABEL_REF) ++ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == PARALLEL ++ && GET_CODE (XVECEXP (body, 0, 0)) == SET ++ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF))) ++ new_block = NEW_BLOCK_BRANCH; ++#endif ++ + #ifndef STACK_REGS + /* Don't bother outputting obvious no-ops, even without -O. + This optimization is fast and doesn't interfere with debugging. +@@ -2402,6 +2468,7 @@ + + if (prev_nonnote_insn (insn) != last_ignored_compare) + abort (); ++ new_block = 0; + + /* We have already processed the notes between the setter and + the user. Make sure we don't process them again, this is +@@ -2435,6 +2502,7 @@ + abort (); + #endif + ++ new_block = 0; + return new; + } + +@@ -3866,3 +3934,188 @@ + symbol_queue_size = 0; + } + } ++ ++ ++#ifdef TARGET_IP28 ++ ++/* Check, whether `insn' is a possibly harmful store instruction, i.e. ++ a store which might cause damage, if speculatively executed. */ ++ ++static int /*inline*/ ++check_pattern_for_store (rtx body) ++{ ++ /* Check for (set (mem:M (non_stackpointer_address) ...)). Here we ++ assume, that addressing with the stackpointer accesses neither ++ uncached-aliased nor invalid memory. (May be, this applies to the ++ global pointer and frame pointer also, but its saver not to assume ++ it. And probably it's not worthwile to regard these registers) */ ++ ++ if (body && GET_CODE (body) == SET) ++ { ++ rtx xexp = SET_DEST (body); ++ if (GET_CODE (xexp) == MEM) ++ { ++ /* Check for the most common stackpointer-addressing modes. ++ It's not worthwile to avoid a cache barrier also on the ++ remaining unfrequently used modes. */ ++ xexp = XEXP (xexp, 0); ++ switch (GET_CODE (xexp)) ++ { ++ case REG: ++ if (REGNO (xexp) == STACK_POINTER_REGNUM) ++ return 0; ++ break; ++ case PLUS: case MINUS: /* always `SP + const' ? */ ++ if (GET_CODE (XEXP (xexp, 0)) == REG ++ && REGNO (XEXP (xexp, 0)) == STACK_POINTER_REGNUM) ++ return 0; ++ if (GET_CODE (XEXP (xexp, 1)) == REG ++ && REGNO (XEXP (xexp, 1)) == STACK_POINTER_REGNUM) ++ return 0; ++ } ++ return 1; ++ } ++ } ++ return 0; ++} ++ ++static int ++check_insn_for_store (int state, rtx insn) ++{ ++ /* Check for (ins (set (mem:M (dangerous_address)) ...)) or end of the ++ current basic block. ++ Criteria to recognize end-of/next basic-block are reduplicated here ++ from final_scan_insn. */ ++ ++ rtx body; ++ int code; ++ ++ if (INSN_DELETED_P (insn)) ++ return 0; ++ ++ switch (code = GET_CODE (insn)) ++ { ++ case CODE_LABEL: ++ return -1; ++ case CALL_INSN: ++ case JUMP_INSN: ++ case INSN: ++ body = PATTERN (insn); ++ if (GET_CODE (body) == SEQUENCE) ++ { ++ /* A delayed-branch sequence */ ++ rtx ins0 = XVECEXP (body, 0, 0); ++ rtx pat0 = PATTERN (ins0); ++ int i; ++ for (i = 0; i < XVECLEN (body, 0); i++) ++ { ++ rtx insq = XVECEXP (body, 0, i); ++ if (! INSN_DELETED_P (insq)) ++ { ++ int j = check_insn_for_store (state|1, insq); ++ if (j) ++ return j; ++ } ++ } ++ /* Following a conditional branch sequence, we have a new ++ basic block. */ ++ if (GET_CODE (ins0) == JUMP_INSN) ++ if ((GET_CODE (pat0) == SET ++ && GET_CODE (SET_SRC (pat0)) != LABEL_REF) ++ || (GET_CODE (pat0) == PARALLEL ++ && GET_CODE (XVECEXP (pat0, 0, 0)) == SET ++ && GET_CODE (SET_SRC (XVECEXP (pat0, 0, 0))) != LABEL_REF)) ++ return -1; ++ /* Handle a call sequence like a conditional branch sequence */ ++ if (GET_CODE (ins0) == CALL_INSN) ++ return -1; ++ break; ++ } ++ if (GET_CODE (body) == PARALLEL) ++ { ++ int i; ++ for (i = 0; i < XVECLEN (body, 0); i++) ++ if (check_pattern_for_store (XVECEXP (body, 0, i))) ++ return 1; ++ } ++ /* Now, only a `simple' INSN or JUMP_INSN remains to be checked. */ ++ if (code == INSN) ++ if (check_pattern_for_store (body)) ++ return 1; ++ /* Handle a CALL_INSN instruction like a conditional branch */ ++ if (code == JUMP_INSN || code == CALL_INSN) ++ { ++ /* Following a conditional branch, we have a new basic block. */ ++ int ckds = 0; ++ if (code == CALL_INSN) ++ ckds = 1; ++ else ++ { ++ code = GET_CODE (body); ++ if ((code == SET ++ && GET_CODE (SET_SRC (body)) != LABEL_REF) ++ || (code == PARALLEL ++ && GET_CODE (XVECEXP (body, 0, 0)) == SET ++ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF)) ++ ckds = 1; ++ } ++ if (ckds) ++ { ++ /* But check insn(s) in delay-slot first. If we could know in ++ advance that this jump is in `.reorder' mode, where gas will ++ insert a `nop' into the delay-slot, we could skip this test. ++ Since we don't know, always assume `.noreorder', sometimes ++ emitting a cache-barrier, that isn't needed. */ ++ /* But if we are here recursively, already checking a (pseudo-) ++ delay-slot, we are done. */ ++ if ( !(state & 2) ) ++ for (insn = NEXT_INSN (insn); insn; insn = NEXT_INSN (insn)) ++ switch (GET_CODE (insn)) ++ { ++ case INSN: ++ if (check_insn_for_store (state|1|2, insn) > 0) ++ return 1; ++ case CODE_LABEL: ++ case CALL_INSN: ++ case JUMP_INSN: ++ return -1; ++ default: ++ /* skip NOTE,... */; ++ } ++ return -1; ++ } ++ } ++ /*break*/ ++ } ++ return 0; ++} ++ ++/* Scan a basic block, starting with `insn', for a possibly harmful store ++ instruction. If found, output a cache barrier at the start of this ++ block. */ ++ ++static int ++output_store_cache_barrier (FILE *file, rtx insn) ++{ ++ for (; insn; insn = NEXT_INSN (insn)) ++ { ++ int found = check_insn_for_store (0, insn); ++ if (found < 0) ++ break; ++ if (found > 0) ++ { ++ /* found critical store instruction */ ++ ASM_OUTPUT_R10K_CACHE_BARRIER(file); ++ return 1; ++ } ++ } ++ fprintf(file, "\t%s Cache Barrier omitted.\n", ASM_COMMENT_START); ++ return 0; ++} ++ ++#endif /* TARGET_IP28 */ ++ ++/* ++ * final.c Sun Jan 18 23:39:57 2004 ++ * final.c Sat Sep 18 00:23:34 2004 ip28 ++ */ diff --git a/sys-devel/gcc/gcc-3.4.3-r1.ebuild b/sys-devel/gcc/gcc-3.4.3-r1.ebuild index 81fd55f58ff1..515f0a78895f 100644 --- a/sys-devel/gcc/gcc-3.4.3-r1.ebuild +++ b/sys-devel/gcc/gcc-3.4.3-r1.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2005 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.3-r1.ebuild,v 1.12 2005/01/07 01:47:41 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.3-r1.ebuild,v 1.13 2005/01/09 19:02:54 kumba Exp $ DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking" @@ -162,19 +162,37 @@ src_unpack() { #epatch ${FILESDIR}/3.4.3/libffi-nogcj-lib-path-fix.patch fi - # If mips, and we DON'T want multilib, then rig gcc to only use n32 OR n64 - if use mips && use !multilib; then - use n32 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n32only.patch - use n64 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n64only.patch - fi - - # Patch forward-ported from a gcc-3.0.x patch that adds -march=r10000 and - # -mtune=r10000 support to gcc (Allows the compiler to generate code to - # take advantage of R10k's second ALU, perform shifts, etc.. - # Needs re-porting for DFA in gcc-4.0 + # /* Begin mips bits */ if use mips; then + # If mips, and we DON'T want multilib, then rig gcc to only use n32 OR n64 + if use !multilib; then + use n32 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n32only.patch + use n64 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n64only.patch + fi + + # Patch forward-ported from a gcc-3.0.x patch that adds -march=r10000 and + # -mtune=r10000 support to gcc (Allows the compiler to generate code to + # take advantage of R10k's second ALU, perform shifts, etc.. + # + # Needs re-porting to DFA in gcc-4.0 - Any Volunteers? :) epatch ${FILESDIR}/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch + + # This is a very special patch -- it allows us to build semi-usable kernels + # on SGI IP28 (Indigo2 Impact R10000) systems. The patch is henceforth + # regarded as a kludge by upstream, and thus, it will never get accepted upstream, + # but for our purposes of building a kernel, it works. + # Unless you're building an IP28 kernel, you really don't need care about what + # this patch does, because if you are, you are probably already aware of what + # it does. + # All that said, the abilities of this patch are disabled by default and need + # to be enabled by passing -mip28-cache-barrier. Only used to build kernels, + # There is the possibility it may be used for very specific userland apps too. + if use ip28; then + epatch ${FILESDIR}/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers.patch + fi fi + # /* End mips bits */ + # hack around some ugly 32bit sse2 wrong-code bugs epatch ${FILESDIR}/3.4.2/gcc34-m32-no-sse2.patch |