forked from Minki/linux
[PATCH] remove gcc-2 checks
Remove various things which were checking for gcc-1.x and gcc-2.x compilers. From: Adrian Bunk <bunk@stusta.de> Some documentation updates and removes some code paths for gcc < 3.2. Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
fd285bb54d
commit
a136564702
@ -31,8 +31,6 @@ al espa
|
|||||||
Eine deutsche Version dieser Datei finden Sie unter
|
Eine deutsche Version dieser Datei finden Sie unter
|
||||||
<http://www.stefan-winter.de/Changes-2.4.0.txt>.
|
<http://www.stefan-winter.de/Changes-2.4.0.txt>.
|
||||||
|
|
||||||
Last updated: October 29th, 2002
|
|
||||||
|
|
||||||
Chris Ricker (kaboom@gatech.edu or chris.ricker@genetics.utah.edu).
|
Chris Ricker (kaboom@gatech.edu or chris.ricker@genetics.utah.edu).
|
||||||
|
|
||||||
Current Minimal Requirements
|
Current Minimal Requirements
|
||||||
@ -48,7 +46,7 @@ necessary on all systems; obviously, if you don't have any ISDN
|
|||||||
hardware, for example, you probably needn't concern yourself with
|
hardware, for example, you probably needn't concern yourself with
|
||||||
isdn4k-utils.
|
isdn4k-utils.
|
||||||
|
|
||||||
o Gnu C 2.95.3 # gcc --version
|
o Gnu C 3.2 # gcc --version
|
||||||
o Gnu make 3.79.1 # make --version
|
o Gnu make 3.79.1 # make --version
|
||||||
o binutils 2.12 # ld -v
|
o binutils 2.12 # ld -v
|
||||||
o util-linux 2.10o # fdformat --version
|
o util-linux 2.10o # fdformat --version
|
||||||
@ -74,26 +72,7 @@ GCC
|
|||||||
---
|
---
|
||||||
|
|
||||||
The gcc version requirements may vary depending on the type of CPU in your
|
The gcc version requirements may vary depending on the type of CPU in your
|
||||||
computer. The next paragraph applies to users of x86 CPUs, but not
|
computer.
|
||||||
necessarily to users of other CPUs. Users of other CPUs should obtain
|
|
||||||
information about their gcc version requirements from another source.
|
|
||||||
|
|
||||||
The recommended compiler for the kernel is gcc 2.95.x (x >= 3), and it
|
|
||||||
should be used when you need absolute stability. You may use gcc 3.0.x
|
|
||||||
instead if you wish, although it may cause problems. Later versions of gcc
|
|
||||||
have not received much testing for Linux kernel compilation, and there are
|
|
||||||
almost certainly bugs (mainly, but not exclusively, in the kernel) that
|
|
||||||
will need to be fixed in order to use these compilers. In any case, using
|
|
||||||
pgcc instead of plain gcc is just asking for trouble.
|
|
||||||
|
|
||||||
The Red Hat gcc 2.96 compiler subtree can also be used to build this tree.
|
|
||||||
You should ensure you use gcc-2.96-74 or later. gcc-2.96-54 will not build
|
|
||||||
the kernel correctly.
|
|
||||||
|
|
||||||
In addition, please pay attention to compiler optimization. Anything
|
|
||||||
greater than -O2 may not be wise. Similarly, if you choose to use gcc-2.95.x
|
|
||||||
or derivatives, be sure not to use -fstrict-aliasing (which, depending on
|
|
||||||
your version of gcc 2.95.x, may necessitate using -fno-strict-aliasing).
|
|
||||||
|
|
||||||
Make
|
Make
|
||||||
----
|
----
|
||||||
@ -322,9 +301,9 @@ Getting updated software
|
|||||||
Kernel compilation
|
Kernel compilation
|
||||||
******************
|
******************
|
||||||
|
|
||||||
gcc 2.95.3
|
gcc
|
||||||
----------
|
---
|
||||||
o <ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3.tar.gz>
|
o <ftp://ftp.gnu.org/gnu/gcc/>
|
||||||
|
|
||||||
Make
|
Make
|
||||||
----
|
----
|
||||||
|
7
README
7
README
@ -183,11 +183,8 @@ CONFIGURING the kernel:
|
|||||||
|
|
||||||
COMPILING the kernel:
|
COMPILING the kernel:
|
||||||
|
|
||||||
- Make sure you have gcc 2.95.3 available.
|
- Make sure you have at least gcc 3.2 available.
|
||||||
gcc 2.91.66 (egcs-1.1.2), and gcc 2.7.2.3 are known to miscompile
|
For more information, refer to Documentation/Changes.
|
||||||
some parts of the kernel, and are *no longer supported*.
|
|
||||||
Also remember to upgrade your binutils package (for as/ld/nm and company)
|
|
||||||
if necessary. For more information, refer to Documentation/Changes.
|
|
||||||
|
|
||||||
Please note that you can still run a.out user programs with this kernel.
|
Please note that you can still run a.out user programs with this kernel.
|
||||||
|
|
||||||
|
@ -23,20 +23,15 @@
|
|||||||
#error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32
|
#error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* GCC 2.95.1, 2.95.2: ignores register clobber list in asm().
|
|
||||||
* GCC 3.0, 3.1: general bad code generation.
|
* GCC 3.0, 3.1: general bad code generation.
|
||||||
* GCC 3.2.0: incorrect function argument offset calculation.
|
* GCC 3.2.0: incorrect function argument offset calculation.
|
||||||
* GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c
|
* GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c
|
||||||
* (http://gcc.gnu.org/PR8896) and incorrect structure
|
* (http://gcc.gnu.org/PR8896) and incorrect structure
|
||||||
* initialisation in fs/jffs2/erase.c
|
* initialisation in fs/jffs2/erase.c
|
||||||
*/
|
*/
|
||||||
#if __GNUC__ < 2 || \
|
#if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
||||||
(__GNUC__ == 2 && __GNUC_MINOR__ < 95) || \
|
|
||||||
(__GNUC__ == 2 && __GNUC_MINOR__ == 95 && __GNUC_PATCHLEVEL__ != 0 && \
|
|
||||||
__GNUC_PATCHLEVEL__ < 3) || \
|
|
||||||
(__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
|
||||||
#error Your compiler is too buggy; it is known to miscompile kernels.
|
#error Your compiler is too buggy; it is known to miscompile kernels.
|
||||||
#error Known good compilers: 2.95.3, 2.95.4, 2.96, 3.3
|
#error Known good compilers: 3.3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Use marker if you need to separate the values later */
|
/* Use marker if you need to separate the values later */
|
||||||
|
@ -25,13 +25,6 @@
|
|||||||
#if defined(__APCS_32__) && defined(CONFIG_CPU_26)
|
#if defined(__APCS_32__) && defined(CONFIG_CPU_26)
|
||||||
#error Sorry, your compiler targets APCS-32 but this kernel requires APCS-26
|
#error Sorry, your compiler targets APCS-32 but this kernel requires APCS-26
|
||||||
#endif
|
#endif
|
||||||
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 95)
|
|
||||||
#error Sorry, your compiler is known to miscompile kernels. Only use gcc 2.95.3 and later.
|
|
||||||
#endif
|
|
||||||
#if __GNUC__ == 2 && __GNUC_MINOR__ == 95
|
|
||||||
/* shame we can't detect the .1 or .2 releases */
|
|
||||||
#warning GCC 2.95.2 and earlier miscompiles kernels.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Use marker if you need to separate the values later */
|
/* Use marker if you need to separate the values later */
|
||||||
|
|
||||||
|
@ -630,10 +630,6 @@ config REGPARM
|
|||||||
and passes the first three arguments of a function call in registers.
|
and passes the first three arguments of a function call in registers.
|
||||||
This will probably break binary only modules.
|
This will probably break binary only modules.
|
||||||
|
|
||||||
This feature is only enabled for gcc-3.0 and later - earlier compilers
|
|
||||||
generate incorrect output with certain kernel constructs when
|
|
||||||
-mregparm=3 is used.
|
|
||||||
|
|
||||||
config SECCOMP
|
config SECCOMP
|
||||||
bool "Enable seccomp to safely compute untrusted bytecode"
|
bool "Enable seccomp to safely compute untrusted bytecode"
|
||||||
depends on PROC_FS
|
depends on PROC_FS
|
||||||
|
@ -37,10 +37,7 @@ CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
|
|||||||
# CPU-specific tuning. Anything which can be shared with UML should go here.
|
# CPU-specific tuning. Anything which can be shared with UML should go here.
|
||||||
include $(srctree)/arch/i386/Makefile.cpu
|
include $(srctree)/arch/i386/Makefile.cpu
|
||||||
|
|
||||||
# -mregparm=3 works ok on gcc-3.0 and later
|
cflags-$(CONFIG_REGPARM) += -mregparm=3
|
||||||
#
|
|
||||||
GCC_VERSION := $(call cc-version)
|
|
||||||
cflags-$(CONFIG_REGPARM) += $(shell if [ $(GCC_VERSION) -ge 0300 ] ; then echo "-mregparm=3"; fi ;)
|
|
||||||
|
|
||||||
# Disable unit-at-a-time mode, it makes gcc use a lot more stack
|
# Disable unit-at-a-time mode, it makes gcc use a lot more stack
|
||||||
# due to the lack of sharing of stacklots.
|
# due to the lack of sharing of stacklots.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# CPU tuning section - shared with UML.
|
# CPU tuning section - shared with UML.
|
||||||
# Must change only cflags-y (or [yn]), not CFLAGS! That makes a difference for UML.
|
# Must change only cflags-y (or [yn]), not CFLAGS! That makes a difference for UML.
|
||||||
|
|
||||||
#-mtune exists since gcc 3.4, and some -mcpu flavors didn't exist in gcc 2.95.
|
#-mtune exists since gcc 3.4
|
||||||
HAS_MTUNE := $(call cc-option-yn, -mtune=i386)
|
HAS_MTUNE := $(call cc-option-yn, -mtune=i386)
|
||||||
ifeq ($(HAS_MTUNE),y)
|
ifeq ($(HAS_MTUNE),y)
|
||||||
tune = $(call cc-option,-mtune=$(1),)
|
tune = $(call cc-option,-mtune=$(1),)
|
||||||
@ -14,7 +14,7 @@ cflags-$(CONFIG_M386) += -march=i386
|
|||||||
cflags-$(CONFIG_M486) += -march=i486
|
cflags-$(CONFIG_M486) += -march=i486
|
||||||
cflags-$(CONFIG_M586) += -march=i586
|
cflags-$(CONFIG_M586) += -march=i586
|
||||||
cflags-$(CONFIG_M586TSC) += -march=i586
|
cflags-$(CONFIG_M586TSC) += -march=i586
|
||||||
cflags-$(CONFIG_M586MMX) += $(call cc-option,-march=pentium-mmx,-march=i586)
|
cflags-$(CONFIG_M586MMX) += -march=pentium-mmx
|
||||||
cflags-$(CONFIG_M686) += -march=i686
|
cflags-$(CONFIG_M686) += -march=i686
|
||||||
cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call tune,pentium2)
|
cflags-$(CONFIG_MPENTIUMII) += -march=i686 $(call tune,pentium2)
|
||||||
cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call tune,pentium3)
|
cflags-$(CONFIG_MPENTIUMIII) += -march=i686 $(call tune,pentium3)
|
||||||
@ -23,8 +23,8 @@ cflags-$(CONFIG_MPENTIUM4) += -march=i686 $(call tune,pentium4)
|
|||||||
cflags-$(CONFIG_MK6) += -march=k6
|
cflags-$(CONFIG_MK6) += -march=k6
|
||||||
# Please note, that patches that add -march=athlon-xp and friends are pointless.
|
# Please note, that patches that add -march=athlon-xp and friends are pointless.
|
||||||
# They make zero difference whatsosever to performance at this time.
|
# They make zero difference whatsosever to performance at this time.
|
||||||
cflags-$(CONFIG_MK7) += $(call cc-option,-march=athlon,-march=i686 $(align)-functions=4)
|
cflags-$(CONFIG_MK7) += -march=athlon
|
||||||
cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,$(call cc-option,-march=athlon,-march=i686 $(align)-functions=4))
|
cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,-march=athlon)
|
||||||
cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
|
cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
|
||||||
cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call tune,pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
|
cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call tune,pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
|
||||||
cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
|
cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
|
||||||
@ -37,5 +37,5 @@ cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686)
|
|||||||
cflags-$(CONFIG_X86_ELAN) += -march=i486
|
cflags-$(CONFIG_X86_ELAN) += -march=i486
|
||||||
|
|
||||||
# Geode GX1 support
|
# Geode GX1 support
|
||||||
cflags-$(CONFIG_MGEODEGX1) += $(call cc-option,-march=pentium-mmx,-march=i486)
|
cflags-$(CONFIG_MGEODEGX1) += -march=pentium-mmx
|
||||||
|
|
||||||
|
@ -37,10 +37,6 @@ $(error Sorry, you need a newer version of the assember, one that is built from
|
|||||||
ftp://ftp.hpl.hp.com/pub/linux-ia64/gas-030124.tar.gz)
|
ftp://ftp.hpl.hp.com/pub/linux-ia64/gas-030124.tar.gz)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(shell if [ $(GCC_VERSION) -lt 0300 ] ; then echo "bad"; fi ;),)
|
|
||||||
$(error Sorry, your compiler is too old. GCC v2.96 is known to generate bad code.)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(GCC_VERSION),0304)
|
ifeq ($(GCC_VERSION),0304)
|
||||||
cflags-$(CONFIG_ITANIUM) += -mtune=merced
|
cflags-$(CONFIG_ITANIUM) += -mtune=merced
|
||||||
cflags-$(CONFIG_MCKINLEY) += -mtune=mckinley
|
cflags-$(CONFIG_MCKINLEY) += -mtune=mckinley
|
||||||
|
@ -1060,7 +1060,7 @@ SET_REG(b5);
|
|||||||
* the clobber lists for spin_lock() in include/asm-ia64/spinlock.h.
|
* the clobber lists for spin_lock() in include/asm-ia64/spinlock.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
#if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
||||||
|
|
||||||
GLOBAL_ENTRY(ia64_spinlock_contention_pre3_4)
|
GLOBAL_ENTRY(ia64_spinlock_contention_pre3_4)
|
||||||
.prologue
|
.prologue
|
||||||
|
@ -103,7 +103,7 @@ EXPORT_SYMBOL(unw_init_running);
|
|||||||
|
|
||||||
#ifdef ASM_SUPPORTED
|
#ifdef ASM_SUPPORTED
|
||||||
# ifdef CONFIG_SMP
|
# ifdef CONFIG_SMP
|
||||||
# if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
# if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
||||||
/*
|
/*
|
||||||
* This is not a normal routine and we don't want a function descriptor for it, so we use
|
* This is not a normal routine and we don't want a function descriptor for it, so we use
|
||||||
* a fake declaration here.
|
* a fake declaration here.
|
||||||
|
@ -32,7 +32,7 @@ typedef struct
|
|||||||
u64 *prev_pfs_loc; /* state for WAR for old spinlock ool code */
|
u64 *prev_pfs_loc; /* state for WAR for old spinlock ool code */
|
||||||
} ia64_backtrace_t;
|
} ia64_backtrace_t;
|
||||||
|
|
||||||
#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
#if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
||||||
/*
|
/*
|
||||||
* Returns non-zero if the PC is in the spinlock contention out-of-line code
|
* Returns non-zero if the PC is in the spinlock contention out-of-line code
|
||||||
* with non-standard calling sequence (on older compilers).
|
* with non-standard calling sequence (on older compilers).
|
||||||
|
@ -306,9 +306,6 @@ static int raid0_run (mddev_t *mddev)
|
|||||||
printk("raid0 : conf->hash_spacing is %llu blocks.\n",
|
printk("raid0 : conf->hash_spacing is %llu blocks.\n",
|
||||||
(unsigned long long)conf->hash_spacing);
|
(unsigned long long)conf->hash_spacing);
|
||||||
{
|
{
|
||||||
#if __GNUC__ < 3
|
|
||||||
volatile
|
|
||||||
#endif
|
|
||||||
sector_t s = mddev->array_size;
|
sector_t s = mddev->array_size;
|
||||||
sector_t space = conf->hash_spacing;
|
sector_t space = conf->hash_spacing;
|
||||||
int round;
|
int round;
|
||||||
@ -439,9 +436,6 @@ static int raid0_make_request (request_queue_t *q, struct bio *bio)
|
|||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
#if __GNUC__ < 3
|
|
||||||
volatile
|
|
||||||
#endif
|
|
||||||
sector_t x = block >> conf->preshift;
|
sector_t x = block >> conf->preshift;
|
||||||
sector_div(x, (u32)conf->hash_spacing);
|
sector_div(x, (u32)conf->hash_spacing);
|
||||||
zone = conf->hash_table[x];
|
zone = conf->hash_table[x];
|
||||||
|
@ -191,9 +191,7 @@ char *v4l2_type_names[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
char *v4l2_ioctl_names[256] = {
|
char *v4l2_ioctl_names[256] = {
|
||||||
#if __GNUC__ >= 3
|
|
||||||
[0 ... 255] = "UNKNOWN",
|
[0 ... 255] = "UNKNOWN",
|
||||||
#endif
|
|
||||||
[_IOC_NR(VIDIOC_QUERYCAP)] = "VIDIOC_QUERYCAP",
|
[_IOC_NR(VIDIOC_QUERYCAP)] = "VIDIOC_QUERYCAP",
|
||||||
[_IOC_NR(VIDIOC_RESERVED)] = "VIDIOC_RESERVED",
|
[_IOC_NR(VIDIOC_RESERVED)] = "VIDIOC_RESERVED",
|
||||||
[_IOC_NR(VIDIOC_ENUM_FMT)] = "VIDIOC_ENUM_FMT",
|
[_IOC_NR(VIDIOC_ENUM_FMT)] = "VIDIOC_ENUM_FMT",
|
||||||
|
@ -212,11 +212,10 @@ extern struct mlog_bits mlog_and_bits, mlog_not_bits;
|
|||||||
mlog(ML_ENTRY, "ENTRY:\n"); \
|
mlog(ML_ENTRY, "ENTRY:\n"); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* We disable this for old compilers since they don't have support for
|
/*
|
||||||
* __builtin_types_compatible_p.
|
* We disable this for sparse.
|
||||||
*/
|
*/
|
||||||
#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) && \
|
#if !defined(__CHECKER__)
|
||||||
!defined(__CHECKER__)
|
|
||||||
#define mlog_exit(st) do { \
|
#define mlog_exit(st) do { \
|
||||||
if (__builtin_types_compatible_p(typeof(st), unsigned long)) \
|
if (__builtin_types_compatible_p(typeof(st), unsigned long)) \
|
||||||
mlog(ML_EXIT, "EXIT: %lu\n", (unsigned long) (st)); \
|
mlog(ML_EXIT, "EXIT: %lu\n", (unsigned long) (st)); \
|
||||||
|
@ -30,13 +30,7 @@
|
|||||||
* By comparing each compnent, we don't have to worry about extra
|
* By comparing each compnent, we don't have to worry about extra
|
||||||
* endian issues in treating two 32 bit numbers as one 64 bit number
|
* endian issues in treating two 32 bit numbers as one 64 bit number
|
||||||
*/
|
*/
|
||||||
static
|
static inline xfs_lsn_t _lsn_cmp(xfs_lsn_t lsn1, xfs_lsn_t lsn2)
|
||||||
#if defined(__GNUC__) && (__GNUC__ == 2) && ( (__GNUC_MINOR__ == 95) || (__GNUC_MINOR__ == 96))
|
|
||||||
__attribute__((unused)) /* gcc 2.95, 2.96 miscompile this when inlined */
|
|
||||||
#else
|
|
||||||
__inline__
|
|
||||||
#endif
|
|
||||||
xfs_lsn_t _lsn_cmp(xfs_lsn_t lsn1, xfs_lsn_t lsn2)
|
|
||||||
{
|
{
|
||||||
if (CYCLE_LSN(lsn1) != CYCLE_LSN(lsn2))
|
if (CYCLE_LSN(lsn1) != CYCLE_LSN(lsn2))
|
||||||
return (CYCLE_LSN(lsn1)<CYCLE_LSN(lsn2))? -999 : 999;
|
return (CYCLE_LSN(lsn1)<CYCLE_LSN(lsn2))? -999 : 999;
|
||||||
|
@ -98,9 +98,7 @@
|
|||||||
#undef inline
|
#undef inline
|
||||||
#undef __inline__
|
#undef __inline__
|
||||||
#undef __inline
|
#undef __inline
|
||||||
#if __GNUC__ == 3 && __GNUC_MINOR__ >= 1 || __GNUC__ > 3
|
|
||||||
#undef __always_inline
|
#undef __always_inline
|
||||||
#define __always_inline inline __attribute__((always_inline))
|
#define __always_inline inline __attribute__((always_inline))
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __ALPHA_COMPILER_H */
|
#endif /* __ALPHA_COMPILER_H */
|
||||||
|
@ -77,7 +77,6 @@ unsigned long get_wchan(struct task_struct *p);
|
|||||||
#define spin_lock_prefetch(lock) do { } while (0)
|
#define spin_lock_prefetch(lock) do { } while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
|
|
||||||
extern inline void prefetch(const void *ptr)
|
extern inline void prefetch(const void *ptr)
|
||||||
{
|
{
|
||||||
__builtin_prefetch(ptr, 0, 3);
|
__builtin_prefetch(ptr, 0, 3);
|
||||||
@ -95,24 +94,4 @@ extern inline void spin_lock_prefetch(const void *ptr)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
|
||||||
extern inline void prefetch(const void *ptr)
|
|
||||||
{
|
|
||||||
__asm__ ("ldl $31,%0" : : "m"(*(char *)ptr));
|
|
||||||
}
|
|
||||||
|
|
||||||
extern inline void prefetchw(const void *ptr)
|
|
||||||
{
|
|
||||||
__asm__ ("ldq $31,%0" : : "m"(*(char *)ptr));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
extern inline void spin_lock_prefetch(const void *ptr)
|
|
||||||
{
|
|
||||||
__asm__ ("ldq $31,%0" : : "m"(*(char *)ptr));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* GCC 3.1 */
|
|
||||||
|
|
||||||
#endif /* __ASM_ALPHA_PROCESSOR_H */
|
#endif /* __ASM_ALPHA_PROCESSOR_H */
|
||||||
|
@ -2,11 +2,7 @@
|
|||||||
#define _ASM_IA64_BUG_H
|
#define _ASM_IA64_BUG_H
|
||||||
|
|
||||||
#ifdef CONFIG_BUG
|
#ifdef CONFIG_BUG
|
||||||
#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
|
|
||||||
#define ia64_abort() __builtin_trap()
|
#define ia64_abort() __builtin_trap()
|
||||||
#else
|
|
||||||
# define ia64_abort() (*(volatile int *) 0 = 0)
|
|
||||||
#endif
|
|
||||||
#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); ia64_abort(); } while (0)
|
#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); ia64_abort(); } while (0)
|
||||||
|
|
||||||
/* should this BUG be made generic? */
|
/* should this BUG be made generic? */
|
||||||
|
@ -34,7 +34,7 @@ __raw_spin_lock_flags (raw_spinlock_t *lock, unsigned long flags)
|
|||||||
{
|
{
|
||||||
register volatile unsigned int *ptr asm ("r31") = &lock->lock;
|
register volatile unsigned int *ptr asm ("r31") = &lock->lock;
|
||||||
|
|
||||||
#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
#if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
||||||
# ifdef CONFIG_ITANIUM
|
# ifdef CONFIG_ITANIUM
|
||||||
/* don't use brl on Itanium... */
|
/* don't use brl on Itanium... */
|
||||||
asm volatile ("{\n\t"
|
asm volatile ("{\n\t"
|
||||||
|
@ -193,11 +193,7 @@ do { \
|
|||||||
* not preserve it's value. Hairy, but it lets us remove 2 loads
|
* not preserve it's value. Hairy, but it lets us remove 2 loads
|
||||||
* and 2 stores in this critical code path. -DaveM
|
* and 2 stores in this critical code path. -DaveM
|
||||||
*/
|
*/
|
||||||
#if __GNUC__ >= 3
|
|
||||||
#define EXTRA_CLOBBER ,"%l1"
|
#define EXTRA_CLOBBER ,"%l1"
|
||||||
#else
|
|
||||||
#define EXTRA_CLOBBER
|
|
||||||
#endif
|
|
||||||
#define switch_to(prev, next, last) \
|
#define switch_to(prev, next, last) \
|
||||||
do { if (test_thread_flag(TIF_PERFCTR)) { \
|
do { if (test_thread_flag(TIF_PERFCTR)) { \
|
||||||
unsigned long __tmp; \
|
unsigned long __tmp; \
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
#ifndef __UM_RWSEM_H__
|
#ifndef __UM_RWSEM_H__
|
||||||
#define __UM_RWSEM_H__
|
#define __UM_RWSEM_H__
|
||||||
|
|
||||||
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
|
|
||||||
#define __builtin_expect(exp,c) (exp)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "asm/arch/rwsem.h"
|
#include "asm/arch/rwsem.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -241,9 +241,6 @@
|
|||||||
/* User programs sometimes end up including this header file
|
/* User programs sometimes end up including this header file
|
||||||
(indirectly, via uClibc header files), so I'm a bit nervous just
|
(indirectly, via uClibc header files), so I'm a bit nervous just
|
||||||
including <linux/compiler.h>. */
|
including <linux/compiler.h>. */
|
||||||
#if !defined(__builtin_expect) && __GNUC__ == 2 && __GNUC_MINOR__ < 96
|
|
||||||
#define __builtin_expect(x, expected_value) (x)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define __syscall_return(type, res) \
|
#define __syscall_return(type, res) \
|
||||||
do { \
|
do { \
|
||||||
@ -346,20 +343,6 @@ type name (atype a, btype b, ctype c, dtype d, etype e) \
|
|||||||
__syscall_return (type, __ret); \
|
__syscall_return (type, __ret); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#if __GNUC__ < 3
|
|
||||||
/* In older versions of gcc, `asm' statements with more than 10
|
|
||||||
input/output arguments produce a fatal error. To work around this
|
|
||||||
problem, we use two versions, one for gcc-3.x and one for earlier
|
|
||||||
versions of gcc (the `earlier gcc' version doesn't work with gcc-3.x
|
|
||||||
because gcc-3.x doesn't allow clobbers to also be input arguments). */
|
|
||||||
#define __SYSCALL6_TRAP(syscall, ret, a, b, c, d, e, f) \
|
|
||||||
__asm__ __volatile__ ("trap " SYSCALL_LONG_TRAP \
|
|
||||||
: "=r" (ret), "=r" (syscall) \
|
|
||||||
: "1" (syscall), \
|
|
||||||
"r" (a), "r" (b), "r" (c), "r" (d), \
|
|
||||||
"r" (e), "r" (f) \
|
|
||||||
: SYSCALL_CLOBBERS, SYSCALL_ARG4, SYSCALL_ARG5);
|
|
||||||
#else /* __GNUC__ >= 3 */
|
|
||||||
#define __SYSCALL6_TRAP(syscall, ret, a, b, c, d, e, f) \
|
#define __SYSCALL6_TRAP(syscall, ret, a, b, c, d, e, f) \
|
||||||
__asm__ __volatile__ ("trap " SYSCALL_LONG_TRAP \
|
__asm__ __volatile__ ("trap " SYSCALL_LONG_TRAP \
|
||||||
: "=r" (ret), "=r" (syscall), \
|
: "=r" (ret), "=r" (syscall), \
|
||||||
@ -368,7 +351,6 @@ type name (atype a, btype b, ctype c, dtype d, etype e) \
|
|||||||
"r" (a), "r" (b), "r" (c), "r" (d), \
|
"r" (a), "r" (b), "r" (c), "r" (d), \
|
||||||
"2" (e), "3" (f) \
|
"2" (e), "3" (f) \
|
||||||
: SYSCALL_CLOBBERS);
|
: SYSCALL_CLOBBERS);
|
||||||
#endif
|
|
||||||
|
|
||||||
#define _syscall6(type, name, atype, a, btype, b, ctype, c, dtype, d, etype, e, ftype, f) \
|
#define _syscall6(type, name, atype, a, btype, b, ctype, c, dtype, d, etype, e, ftype, f) \
|
||||||
type name (atype a, btype b, ctype c, dtype d, etype e, ftype f) \
|
type name (atype a, btype b, ctype c, dtype d, etype e, ftype f) \
|
||||||
|
@ -156,7 +156,7 @@ extern __be32 htonl(__u32);
|
|||||||
extern __u16 ntohs(__be16);
|
extern __u16 ntohs(__be16);
|
||||||
extern __be16 htons(__u16);
|
extern __be16 htons(__u16);
|
||||||
|
|
||||||
#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
|
#if defined(__GNUC__) && defined(__OPTIMIZE__)
|
||||||
|
|
||||||
#define ___htonl(x) __cpu_to_be32(x)
|
#define ___htonl(x) __cpu_to_be32(x)
|
||||||
#define ___htons(x) __cpu_to_be16(x)
|
#define ___htons(x) __cpu_to_be16(x)
|
||||||
|
@ -110,7 +110,7 @@
|
|||||||
/*
|
/*
|
||||||
* Allow constant folding
|
* Allow constant folding
|
||||||
*/
|
*/
|
||||||
#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
|
#if defined(__GNUC__) && defined(__OPTIMIZE__)
|
||||||
# define __swab16(x) \
|
# define __swab16(x) \
|
||||||
(__builtin_constant_p((__u16)(x)) ? \
|
(__builtin_constant_p((__u16)(x)) ? \
|
||||||
___swab16((x)) : \
|
___swab16((x)) : \
|
||||||
|
@ -77,7 +77,7 @@
|
|||||||
/*
|
/*
|
||||||
* Allow constant folding
|
* Allow constant folding
|
||||||
*/
|
*/
|
||||||
#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
|
#if defined(__GNUC__) && defined(__OPTIMIZE__)
|
||||||
# define __swahw32(x) \
|
# define __swahw32(x) \
|
||||||
(__builtin_constant_p((__u32)(x)) ? \
|
(__builtin_constant_p((__u32)(x)) ? \
|
||||||
___swahw32((x)) : \
|
___swahw32((x)) : \
|
||||||
|
@ -15,3 +15,12 @@
|
|||||||
({ unsigned long __ptr; \
|
({ unsigned long __ptr; \
|
||||||
__asm__ ("" : "=g"(__ptr) : "0"(ptr)); \
|
__asm__ ("" : "=g"(__ptr) : "0"(ptr)); \
|
||||||
(typeof(ptr)) (__ptr + (off)); })
|
(typeof(ptr)) (__ptr + (off)); })
|
||||||
|
|
||||||
|
|
||||||
|
#define inline inline __attribute__((always_inline))
|
||||||
|
#define __inline__ __inline__ __attribute__((always_inline))
|
||||||
|
#define __inline __inline __attribute__((always_inline))
|
||||||
|
#define __deprecated __attribute__((deprecated))
|
||||||
|
#define noinline __attribute__((noinline))
|
||||||
|
#define __attribute_pure__ __attribute__((pure))
|
||||||
|
#define __attribute_const__ __attribute__((__const__))
|
||||||
|
@ -3,29 +3,12 @@
|
|||||||
/* These definitions are for GCC v3.x. */
|
/* These definitions are for GCC v3.x. */
|
||||||
#include <linux/compiler-gcc.h>
|
#include <linux/compiler-gcc.h>
|
||||||
|
|
||||||
#if __GNUC_MINOR__ >= 1
|
|
||||||
# define inline inline __attribute__((always_inline))
|
|
||||||
# define __inline__ __inline__ __attribute__((always_inline))
|
|
||||||
# define __inline __inline __attribute__((always_inline))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __GNUC_MINOR__ > 0
|
|
||||||
# define __deprecated __attribute__((deprecated))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __GNUC_MINOR__ >= 3
|
#if __GNUC_MINOR__ >= 3
|
||||||
# define __attribute_used__ __attribute__((__used__))
|
# define __attribute_used__ __attribute__((__used__))
|
||||||
#else
|
#else
|
||||||
# define __attribute_used__ __attribute__((__unused__))
|
# define __attribute_used__ __attribute__((__unused__))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __attribute_pure__ __attribute__((pure))
|
|
||||||
#define __attribute_const__ __attribute__((__const__))
|
|
||||||
|
|
||||||
#if __GNUC_MINOR__ >= 1
|
|
||||||
#define noinline __attribute__((noinline))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __GNUC_MINOR__ >= 4
|
#if __GNUC_MINOR__ >= 4
|
||||||
#define __must_check __attribute__((warn_unused_result))
|
#define __must_check __attribute__((warn_unused_result))
|
||||||
#endif
|
#endif
|
||||||
|
@ -3,14 +3,7 @@
|
|||||||
/* These definitions are for GCC v4.x. */
|
/* These definitions are for GCC v4.x. */
|
||||||
#include <linux/compiler-gcc.h>
|
#include <linux/compiler-gcc.h>
|
||||||
|
|
||||||
#define inline inline __attribute__((always_inline))
|
|
||||||
#define __inline__ __inline__ __attribute__((always_inline))
|
|
||||||
#define __inline __inline __attribute__((always_inline))
|
|
||||||
#define __deprecated __attribute__((deprecated))
|
|
||||||
#define __attribute_used__ __attribute__((__used__))
|
#define __attribute_used__ __attribute__((__used__))
|
||||||
#define __attribute_pure__ __attribute__((pure))
|
|
||||||
#define __attribute_const__ __attribute__((__const__))
|
|
||||||
#define noinline __attribute__((noinline))
|
|
||||||
#define __must_check __attribute__((warn_unused_result))
|
#define __must_check __attribute__((warn_unused_result))
|
||||||
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
|
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
|
||||||
|
|
||||||
|
@ -316,8 +316,6 @@ extern int randomize_va_space;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Trap pasters of __FUNCTION__ at compile-time */
|
/* Trap pasters of __FUNCTION__ at compile-time */
|
||||||
#if __GNUC__ > 2 || __GNUC_MINOR__ >= 95
|
|
||||||
#define __FUNCTION__ (__func__)
|
#define __FUNCTION__ (__func__)
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -26,11 +26,7 @@ static inline int has_secure_computing(struct thread_info *ti)
|
|||||||
|
|
||||||
#else /* CONFIG_SECCOMP */
|
#else /* CONFIG_SECCOMP */
|
||||||
|
|
||||||
#if (__GNUC__ > 2)
|
|
||||||
typedef struct { } seccomp_t;
|
typedef struct { } seccomp_t;
|
||||||
#else
|
|
||||||
typedef struct { int gcc_is_buggy; } seccomp_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define secure_computing(x) do { } while (0)
|
#define secure_computing(x) do { } while (0)
|
||||||
/* static inline to preserve typechecking */
|
/* static inline to preserve typechecking */
|
||||||
|
@ -22,30 +22,16 @@ typedef struct {
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
/*
|
|
||||||
* All gcc 2.95 versions and early versions of 2.96 have a nasty bug
|
|
||||||
* with empty initializers.
|
|
||||||
*/
|
|
||||||
#if (__GNUC__ > 2)
|
|
||||||
typedef struct { } raw_spinlock_t;
|
typedef struct { } raw_spinlock_t;
|
||||||
|
|
||||||
#define __RAW_SPIN_LOCK_UNLOCKED { }
|
#define __RAW_SPIN_LOCK_UNLOCKED { }
|
||||||
#else
|
|
||||||
typedef struct { int gcc_is_buggy; } raw_spinlock_t;
|
|
||||||
#define __RAW_SPIN_LOCK_UNLOCKED (raw_spinlock_t) { 0 }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (__GNUC__ > 2)
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* no debug version on UP */
|
/* no debug version on UP */
|
||||||
} raw_rwlock_t;
|
} raw_rwlock_t;
|
||||||
|
|
||||||
#define __RAW_RW_LOCK_UNLOCKED { }
|
#define __RAW_RW_LOCK_UNLOCKED { }
|
||||||
#else
|
|
||||||
typedef struct { int gcc_is_buggy; } raw_rwlock_t;
|
|
||||||
#define __RAW_RW_LOCK_UNLOCKED (raw_rwlock_t) { 0 }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __LINUX_SPINLOCK_TYPES_UP_H */
|
#endif /* __LINUX_SPINLOCK_TYPES_UP_H */
|
||||||
|
@ -115,18 +115,11 @@ MODULE_PARM_DESC(osrun_time, "how many seconds to wait for the ICS2115 OS");
|
|||||||
|
|
||||||
#ifdef WF_DEBUG
|
#ifdef WF_DEBUG
|
||||||
|
|
||||||
#if defined(NEW_MACRO_VARARGS) || __GNUC__ >= 3
|
|
||||||
#define DPRINT(cond, ...) \
|
#define DPRINT(cond, ...) \
|
||||||
if ((dev->debug & (cond)) == (cond)) { \
|
if ((dev->debug & (cond)) == (cond)) { \
|
||||||
snd_printk (__VA_ARGS__); \
|
snd_printk (__VA_ARGS__); \
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define DPRINT(cond, args...) \
|
|
||||||
if ((dev->debug & (cond)) == (cond)) { \
|
|
||||||
snd_printk (args); \
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define DPRINT(cond, args...)
|
#define DPRINT(cond, args...)
|
||||||
#endif /* WF_DEBUG */
|
#endif /* WF_DEBUG */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user