The model(small) attribute is not supported by gcc 4.X. The tests will always be negative today. Cc: linux-ia64@vger.kernel.org Cc: tony.luck@intel.com Signed-off-by: Christoph Lameter <clameter@sgi.com> --- arch/ia64/scripts/check-model.c | 1 - arch/ia64/scripts/toolchain-flags | 6 ------ include/asm-ia64/percpu.h | 12 +++--------- 3 files changed, 3 insertions(+), 16 deletions(-) Index: linux-2.6/include/asm-ia64/percpu.h =================================================================== --- linux-2.6.orig/include/asm-ia64/percpu.h 2007-11-22 15:55:47.634454755 -0800 +++ linux-2.6/include/asm-ia64/percpu.h 2007-11-22 15:56:15.974704716 -0800 @@ -15,24 +15,18 @@ #include <linux/threads.h> -#ifdef HAVE_MODEL_SMALL_ATTRIBUTE -# define __SMALL_ADDR_AREA __attribute__((__model__ (__small__))) -#else -# define __SMALL_ADDR_AREA -#endif - #define DECLARE_PER_CPU(type, name) \ - extern __SMALL_ADDR_AREA __typeof__(type) per_cpu__##name + extern __typeof__(type) per_cpu__##name /* Separate out the type, so (int[3], foo) works. */ #define DEFINE_PER_CPU(type, name) \ __attribute__((__section__(".data.percpu"))) \ - __SMALL_ADDR_AREA __typeof__(type) per_cpu__##name + __typeof__(type) per_cpu__##name #ifdef CONFIG_SMP #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \ __attribute__((__section__(".data.percpu.shared_aligned"))) \ - __SMALL_ADDR_AREA __typeof__(type) per_cpu__##name \ + __typeof__(type) per_cpu__##name \ ____cacheline_aligned_in_smp #else #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \ Index: linux-2.6/arch/ia64/scripts/check-model.c =================================================================== --- linux-2.6.orig/arch/ia64/scripts/check-model.c 2007-11-22 15:56:40.890455063 -0800 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -int __attribute__ ((__model__ (__small__))) x; Index: linux-2.6/arch/ia64/scripts/toolchain-flags ==================================...
Which gcc 4.X are you talking about? Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." -
All. Last gcc that supported this was 3.4. -
Strange. Works fine here.
$ arch/ia64/scripts/toolchain-flags gcc objdump readelf
-DHAVE_WORKING_TEXT_ALIGN -DHAVE_MODEL_SMALL_ATTRIBUTE -DHAVE_SERIALIZE_DIRECTIVE
$ gcc --version | head -n 1
gcc (GCC) 4.2.1 (SUSE Linux)
$ grep ia64_handle_model_attribute config/ia64/*.c
config/ia64/ia64.c:static tree ia64_handle_model_attribute (tree *, tree, tree, int, bool *);
config/ia64/ia64.c: { "model", 1, 1, true, false, false, ia64_handle_model_attribute },
config/ia64/ia64.c:ia64_handle_model_attribute (tree *node, tree name, tree args,
$ grep small_addr_symbolic_operand config/ia64/*.md
config/ia64/constraints.md: (match_operand 0 "small_addr_symbolic_operand"))
config/ia64/predicates.md:(define_predicate "small_addr_symbolic_operand"
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
-Hmmm... http://www.ohse.de/uwe/articles/gcc-attributes.html says: model (MODEL-NAME) Found in versions: 2.8-3.4 But true my compiler still takes it. Ok, I am going to add an option to add attributes to percpu definitions. -
This site says at the top it used gcc versions up to 3.4, so it
obviously can't find anything in gcc >= 4.0 ...
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
-What was the rationale for removing this attribute? --david -
The code is then similar across all architectures and can be moved into generic code. -
Uniformity for the sake of uniformity? The small data addressing is really elegant and I don't think it should be dropped just for the sake of uniformity. --david -
Uniformity for the sake of code size reduction and easier maintenance. Yes I think it would be great to have this feature on all arches if possible. If someone could work with the gcc /linker folks to get this done that would be great. But the feature has been removed from gcc and so its not usable for IA64 with a current compiler anymore. This is basically removing useless code. -
Code-size reduction? You must be talking *source* code size reduction. Surely the small-data access-method decreases object code size. --david -
Yes source code reduction. I just added the attribute back but in such a way that any arch can add attributes to per cpu definitions. -
| Greg Kroah-Hartman | [PATCH 019/196] DMA: Convert from class_device to device for DMA engine |
| Tejun Heo | [PATCH 4/7] FUSE: implement direct lseek support |
| Parag Warudkar | BUG: soft lockup - CPU#1 stuck for 15s! [swapper:0] |
| Greg Smith | PostgreSQL pgbench performance regression in 2.6.23+ |
git: | |
| Len Brown | fatal: unable to create '.git/index': File exists |
| Dan Farina | backup or mirror a repository |
| André Goddard Rosa | Using kdiff3 to compare two different revisions of a folder |
| Petko Manolov | git and binary files |
| Richard Stallman | Real men don't attack straw men |
| Steve B | Intel Atom and D945GCLF2 |
| Jeff Ross | U320 Drive on U160 controller? |
| Sunnz | How do I configure sendmail? |
| Eric Dumazet | [PATCH] fs: pipe/sockets/anon dentries should not have a parent |
| Denys Fedoryshchenko | thousands of classes, e1000 TX unit hang |
| Wei Yongjun | [PATCH] xfrm: Fix kernel panic when flush and dump SPD entries |
| Steffen Klassert | [RFC PATCH 4/5] crypto: allow allocation of percpu crypto transforms |
