diff options
| author | David Howells <dhowells@redhat.com> | 2012-03-28 18:11:12 +0100 | 
|---|---|---|
| committer | David Howells <dhowells@redhat.com> | 2012-03-28 18:11:12 +0100 | 
| commit | ec2212088c42ff7d1362629ec26dda4f3e8bdad3 (patch) | |
| tree | 0e99963f6818ef9c07fe8f2fb1f9851ef9641313 | |
| parent | f05e798ad4c09255f590f5b2c00a7ca6c172f983 (diff) | |
| download | olio-linux-3.10-ec2212088c42ff7d1362629ec26dda4f3e8bdad3.tar.xz olio-linux-3.10-ec2212088c42ff7d1362629ec26dda4f3e8bdad3.zip  | |
Disintegrate asm/system.h for Alpha
Disintegrate asm/system.h for Alpha.
Signed-off-by: David Howells <dhowells@redhat.com>
cc: linux-alpha@vger.kernel.org
65 files changed, 388 insertions, 402 deletions
diff --git a/arch/alpha/boot/bootp.c b/arch/alpha/boot/bootp.c index be61670d409..2a542a50655 100644 --- a/arch/alpha/boot/bootp.c +++ b/arch/alpha/boot/bootp.c @@ -13,7 +13,6 @@  #include <generated/utsrelease.h>  #include <linux/mm.h> -#include <asm/system.h>  #include <asm/console.h>  #include <asm/hwrpb.h>  #include <asm/pgtable.h> diff --git a/arch/alpha/boot/bootpz.c b/arch/alpha/boot/bootpz.c index c98865f2142..d6ad191698d 100644 --- a/arch/alpha/boot/bootpz.c +++ b/arch/alpha/boot/bootpz.c @@ -15,7 +15,6 @@  #include <generated/utsrelease.h>  #include <linux/mm.h> -#include <asm/system.h>  #include <asm/console.h>  #include <asm/hwrpb.h>  #include <asm/pgtable.h> diff --git a/arch/alpha/boot/head.S b/arch/alpha/boot/head.S index f3d98089b3d..b06812bcac8 100644 --- a/arch/alpha/boot/head.S +++ b/arch/alpha/boot/head.S @@ -4,7 +4,6 @@   * initial bootloader stuff..   */ -#include <asm/system.h>  	.set noreorder  	.globl	__start diff --git a/arch/alpha/boot/main.c b/arch/alpha/boot/main.c index ded57d9a80e..3baf2d1e908 100644 --- a/arch/alpha/boot/main.c +++ b/arch/alpha/boot/main.c @@ -11,7 +11,6 @@  #include <generated/utsrelease.h>  #include <linux/mm.h> -#include <asm/system.h>  #include <asm/console.h>  #include <asm/hwrpb.h>  #include <asm/pgtable.h> diff --git a/arch/alpha/include/asm/atomic.h b/arch/alpha/include/asm/atomic.h index 640f909ddd4..f62251e82ff 100644 --- a/arch/alpha/include/asm/atomic.h +++ b/arch/alpha/include/asm/atomic.h @@ -3,7 +3,6 @@  #include <linux/types.h>  #include <asm/barrier.h> -#include <asm/system.h>  /*   * Atomic operations that C can't guarantee us.  Useful for @@ -169,6 +168,73 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v)  	return result;  } +/* + * Atomic exchange routines. + */ + +#define __ASM__MB +#define ____xchg(type, args...)		__xchg ## type ## _local(args) +#define ____cmpxchg(type, args...)	__cmpxchg ## type ## _local(args) +#include <asm/xchg.h> + +#define xchg_local(ptr,x)						\ +  ({									\ +     __typeof__(*(ptr)) _x_ = (x);					\ +     (__typeof__(*(ptr))) __xchg_local((ptr), (unsigned long)_x_,	\ +				       sizeof(*(ptr)));			\ +  }) + +#define cmpxchg_local(ptr, o, n)					\ +  ({									\ +     __typeof__(*(ptr)) _o_ = (o);					\ +     __typeof__(*(ptr)) _n_ = (n);					\ +     (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_,	\ +					  (unsigned long)_n_,		\ +					  sizeof(*(ptr)));		\ +  }) + +#define cmpxchg64_local(ptr, o, n)					\ +  ({									\ +	BUILD_BUG_ON(sizeof(*(ptr)) != 8);				\ +	cmpxchg_local((ptr), (o), (n));					\ +  }) + +#ifdef CONFIG_SMP +#undef __ASM__MB +#define __ASM__MB	"\tmb\n" +#endif +#undef ____xchg +#undef ____cmpxchg +#define ____xchg(type, args...)		__xchg ##type(args) +#define ____cmpxchg(type, args...)	__cmpxchg ##type(args) +#include <asm/xchg.h> + +#define xchg(ptr,x)							\ +  ({									\ +     __typeof__(*(ptr)) _x_ = (x);					\ +     (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_,		\ +				 sizeof(*(ptr)));			\ +  }) + +#define cmpxchg(ptr, o, n)						\ +  ({									\ +     __typeof__(*(ptr)) _o_ = (o);					\ +     __typeof__(*(ptr)) _n_ = (n);					\ +     (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,		\ +				    (unsigned long)_n_,	sizeof(*(ptr)));\ +  }) + +#define cmpxchg64(ptr, o, n)						\ +  ({									\ +	BUILD_BUG_ON(sizeof(*(ptr)) != 8);				\ +	cmpxchg((ptr), (o), (n));					\ +  }) + +#undef __ASM__MB +#undef ____cmpxchg + +#define __HAVE_ARCH_CMPXCHG 1 +  #define atomic64_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), old, new))  #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) diff --git a/arch/alpha/include/asm/auxvec.h b/arch/alpha/include/asm/auxvec.h index e96fe880e31..a3a579dfdb4 100644 --- a/arch/alpha/include/asm/auxvec.h +++ b/arch/alpha/include/asm/auxvec.h @@ -21,4 +21,6 @@  #define AT_L2_CACHESHAPE	36  #define AT_L3_CACHESHAPE	37 +#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */ +  #endif /* __ASM_ALPHA_AUXVEC_H */ diff --git a/arch/alpha/include/asm/core_lca.h b/arch/alpha/include/asm/core_lca.h index f7cb4b46095..8ee6c516279 100644 --- a/arch/alpha/include/asm/core_lca.h +++ b/arch/alpha/include/asm/core_lca.h @@ -1,8 +1,8 @@  #ifndef __ALPHA_LCA__H__  #define __ALPHA_LCA__H__ -#include <asm/system.h>  #include <asm/compiler.h> +#include <asm/mce.h>  /*   * Low Cost Alpha (LCA) definitions (these apply to 21066 and 21068, diff --git a/arch/alpha/include/asm/core_mcpcia.h b/arch/alpha/include/asm/core_mcpcia.h index 9f67a056b46..ad44bef29fb 100644 --- a/arch/alpha/include/asm/core_mcpcia.h +++ b/arch/alpha/include/asm/core_mcpcia.h @@ -7,6 +7,7 @@  #include <linux/types.h>  #include <asm/compiler.h> +#include <asm/mce.h>  /*   * MCPCIA is the internal name for a core logic chipset which provides diff --git a/arch/alpha/include/asm/core_t2.h b/arch/alpha/include/asm/core_t2.h index 91b46801b29..ade9d92e68b 100644 --- a/arch/alpha/include/asm/core_t2.h +++ b/arch/alpha/include/asm/core_t2.h @@ -7,7 +7,6 @@  #include <linux/types.h>  #include <linux/spinlock.h>  #include <asm/compiler.h> -#include <asm/system.h>  /*   * T2 is the internal name for the core logic chipset which provides diff --git a/arch/alpha/include/asm/elf.h b/arch/alpha/include/asm/elf.h index da5449e2217..968d9991f5e 100644 --- a/arch/alpha/include/asm/elf.h +++ b/arch/alpha/include/asm/elf.h @@ -2,6 +2,7 @@  #define __ASM_ALPHA_ELF_H  #include <asm/auxvec.h> +#include <asm/special_insns.h>  /* Special values for the st_other field in the symbol table.  */ diff --git a/arch/alpha/include/asm/exec.h b/arch/alpha/include/asm/exec.h new file mode 100644 index 00000000000..4a5a41f3077 --- /dev/null +++ b/arch/alpha/include/asm/exec.h @@ -0,0 +1,6 @@ +#ifndef __ALPHA_EXEC_H +#define __ALPHA_EXEC_H + +#define arch_align_stack(x) (x) + +#endif /* __ALPHA_EXEC_H */ diff --git a/arch/alpha/include/asm/fpu.h b/arch/alpha/include/asm/fpu.h index ecb17a72acc..db00f7885fa 100644 --- a/arch/alpha/include/asm/fpu.h +++ b/arch/alpha/include/asm/fpu.h @@ -1,6 +1,8 @@  #ifndef __ASM_ALPHA_FPU_H  #define __ASM_ALPHA_FPU_H +#include <asm/special_insns.h> +  /*   * Alpha floating-point control register defines:   */ diff --git a/arch/alpha/include/asm/io.h b/arch/alpha/include/asm/io.h index 56ff9650135..7a3d38d5ed6 100644 --- a/arch/alpha/include/asm/io.h +++ b/arch/alpha/include/asm/io.h @@ -6,7 +6,6 @@  #include <linux/kernel.h>  #include <linux/mm.h>  #include <asm/compiler.h> -#include <asm/system.h>  #include <asm/pgtable.h>  #include <asm/machvec.h>  #include <asm/hwrpb.h> diff --git a/arch/alpha/include/asm/irqflags.h b/arch/alpha/include/asm/irqflags.h index 299bbc7e9d7..ffb1726484a 100644 --- a/arch/alpha/include/asm/irqflags.h +++ b/arch/alpha/include/asm/irqflags.h @@ -1,7 +1,7 @@  #ifndef __ALPHA_IRQFLAGS_H  #define __ALPHA_IRQFLAGS_H -#include <asm/system.h> +#include <asm/pal.h>  #define IPL_MIN		0  #define IPL_SW0		1 diff --git a/arch/alpha/include/asm/mce.h b/arch/alpha/include/asm/mce.h new file mode 100644 index 00000000000..660285b9aca --- /dev/null +++ b/arch/alpha/include/asm/mce.h @@ -0,0 +1,83 @@ +#ifndef __ALPHA_MCE_H +#define __ALPHA_MCE_H + +/* + * This is the logout header that should be common to all platforms + * (assuming they are running OSF/1 PALcode, I guess). + */ +struct el_common { +	unsigned int	size;		/* size in bytes of logout area */ +	unsigned int	sbz1	: 30;	/* should be zero */ +	unsigned int	err2	:  1;	/* second error */ +	unsigned int	retry	:  1;	/* retry flag */ +	unsigned int	proc_offset;	/* processor-specific offset */ +	unsigned int	sys_offset;	/* system-specific offset */ +	unsigned int	code;		/* machine check code */ +	unsigned int	frame_rev;	/* frame revision */ +}; + +/* Machine Check Frame for uncorrectable errors (Large format) + *      --- This is used to log uncorrectable errors such as + *          double bit ECC errors. + *      --- These errors are detected by both processor and systems. + */ +struct el_common_EV5_uncorrectable_mcheck { +        unsigned long   shadow[8];        /* Shadow reg. 8-14, 25           */ +        unsigned long   paltemp[24];      /* PAL TEMP REGS.                 */ +        unsigned long   exc_addr;         /* Address of excepting instruction*/ +        unsigned long   exc_sum;          /* Summary of arithmetic traps.   */ +        unsigned long   exc_mask;         /* Exception mask (from exc_sum). */ +        unsigned long   pal_base;         /* Base address for PALcode.      */ +        unsigned long   isr;              /* Interrupt Status Reg.          */ +        unsigned long   icsr;             /* CURRENT SETUP OF EV5 IBOX      */ +        unsigned long   ic_perr_stat;     /* I-CACHE Reg. <11> set Data parity +                                                         <12> set TAG parity*/ +        unsigned long   dc_perr_stat;     /* D-CACHE error Reg. Bits set to 1: +                                                     <2> Data error in bank 0 +                                                     <3> Data error in bank 1 +                                                     <4> Tag error in bank 0 +                                                     <5> Tag error in bank 1 */ +        unsigned long   va;               /* Effective VA of fault or miss. */ +        unsigned long   mm_stat;          /* Holds the reason for D-stream  +                                             fault or D-cache parity errors */ +        unsigned long   sc_addr;          /* Address that was being accessed +                                             when EV5 detected Secondary cache +                                             failure.                 */ +        unsigned long   sc_stat;          /* Helps determine if the error was +                                             TAG/Data parity(Secondary Cache)*/ +        unsigned long   bc_tag_addr;      /* Contents of EV5 BC_TAG_ADDR    */ +        unsigned long   ei_addr;          /* Physical address of any transfer +                                             that is logged in EV5 EI_STAT */ +        unsigned long   fill_syndrome;    /* For correcting ECC errors.     */ +        unsigned long   ei_stat;          /* Helps identify reason of any  +                                             processor uncorrectable error +                                             at its external interface.     */ +        unsigned long   ld_lock;          /* Contents of EV5 LD_LOCK register*/ +}; + +struct el_common_EV6_mcheck { +	unsigned int FrameSize;		/* Bytes, including this field */ +	unsigned int FrameFlags;	/* <31> = Retry, <30> = Second Error */ +	unsigned int CpuOffset;		/* Offset to CPU-specific info */ +	unsigned int SystemOffset;	/* Offset to system-specific info */ +	unsigned int MCHK_Code; +	unsigned int MCHK_Frame_Rev; +	unsigned long I_STAT;		/* EV6 Internal Processor Registers */ +	unsigned long DC_STAT;		/* (See the 21264 Spec) */ +	unsigned long C_ADDR; +	unsigned long DC1_SYNDROME; +	unsigned long DC0_SYNDROME; +	unsigned long C_STAT; +	unsigned long C_STS; +	unsigned long MM_STAT; +	unsigned long EXC_ADDR; +	unsigned long IER_CM; +	unsigned long ISUM; +	unsigned long RESERVED0; +	unsigned long PAL_BASE; +	unsigned long I_CTL; +	unsigned long PCTX; +}; + + +#endif /* __ALPHA_MCE_H */ diff --git a/arch/alpha/include/asm/mmu_context.h b/arch/alpha/include/asm/mmu_context.h index 86c08a02d23..4c51c05333c 100644 --- a/arch/alpha/include/asm/mmu_context.h +++ b/arch/alpha/include/asm/mmu_context.h @@ -7,7 +7,6 @@   * Copyright (C) 1996, Linus Torvalds   */ -#include <asm/system.h>  #include <asm/machvec.h>  #include <asm/compiler.h>  #include <asm-generic/mm_hooks.h> diff --git a/arch/alpha/include/asm/pal.h b/arch/alpha/include/asm/pal.h index 9b4ba0d6f00..6699ee58342 100644 --- a/arch/alpha/include/asm/pal.h +++ b/arch/alpha/include/asm/pal.h @@ -48,4 +48,116 @@  #define PAL_retsys	61  #define PAL_rti		63 +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ + +extern void halt(void) __attribute__((noreturn)); +#define __halt() __asm__ __volatile__ ("call_pal %0 #halt" : : "i" (PAL_halt)) + +#define imb() \ +__asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") + +#define draina() \ +__asm__ __volatile__ ("call_pal %0 #draina" : : "i" (PAL_draina) : "memory") + +#define __CALL_PAL_R0(NAME, TYPE)				\ +extern inline TYPE NAME(void)					\ +{								\ +	register TYPE __r0 __asm__("$0");			\ +	__asm__ __volatile__(					\ +		"call_pal %1 # " #NAME				\ +		:"=r" (__r0)					\ +		:"i" (PAL_ ## NAME)				\ +		:"$1", "$16", "$22", "$23", "$24", "$25");	\ +	return __r0;						\ +} + +#define __CALL_PAL_W1(NAME, TYPE0)				\ +extern inline void NAME(TYPE0 arg0)				\ +{								\ +	register TYPE0 __r16 __asm__("$16") = arg0;		\ +	__asm__ __volatile__(					\ +		"call_pal %1 # "#NAME				\ +		: "=r"(__r16)					\ +		: "i"(PAL_ ## NAME), "0"(__r16)			\ +		: "$1", "$22", "$23", "$24", "$25");		\ +} + +#define __CALL_PAL_W2(NAME, TYPE0, TYPE1)			\ +extern inline void NAME(TYPE0 arg0, TYPE1 arg1)			\ +{								\ +	register TYPE0 __r16 __asm__("$16") = arg0;		\ +	register TYPE1 __r17 __asm__("$17") = arg1;		\ +	__asm__ __volatile__(					\ +		"call_pal %2 # "#NAME				\ +		: "=r"(__r16), "=r"(__r17)			\ +		: "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17)	\ +		: "$1", "$22", "$23", "$24", "$25");		\ +} + +#define __CALL_PAL_RW1(NAME, RTYPE, TYPE0)			\ +extern inline RTYPE NAME(TYPE0 arg0)				\ +{								\ +	register RTYPE __r0 __asm__("$0");			\ +	register TYPE0 __r16 __asm__("$16") = arg0;		\ +	__asm__ __volatile__(					\ +		"call_pal %2 # "#NAME				\ +		: "=r"(__r16), "=r"(__r0)			\ +		: "i"(PAL_ ## NAME), "0"(__r16)			\ +		: "$1", "$22", "$23", "$24", "$25");		\ +	return __r0;						\ +} + +#define __CALL_PAL_RW2(NAME, RTYPE, TYPE0, TYPE1)		\ +extern inline RTYPE NAME(TYPE0 arg0, TYPE1 arg1)		\ +{								\ +	register RTYPE __r0 __asm__("$0");			\ +	register TYPE0 __r16 __asm__("$16") = arg0;		\ +	register TYPE1 __r17 __asm__("$17") = arg1;		\ +	__asm__ __volatile__(					\ +		"call_pal %3 # "#NAME				\ +		: "=r"(__r16), "=r"(__r17), "=r"(__r0)		\ +		: "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17)	\ +		: "$1", "$22", "$23", "$24", "$25");		\ +	return __r0;						\ +} + +__CALL_PAL_W1(cflush, unsigned long); +__CALL_PAL_R0(rdmces, unsigned long); +__CALL_PAL_R0(rdps, unsigned long); +__CALL_PAL_R0(rdusp, unsigned long); +__CALL_PAL_RW1(swpipl, unsigned long, unsigned long); +__CALL_PAL_R0(whami, unsigned long); +__CALL_PAL_W2(wrent, void*, unsigned long); +__CALL_PAL_W1(wripir, unsigned long); +__CALL_PAL_W1(wrkgp, unsigned long); +__CALL_PAL_W1(wrmces, unsigned long); +__CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long); +__CALL_PAL_W1(wrusp, unsigned long); +__CALL_PAL_W1(wrvptptr, unsigned long); + +/* + * TB routines.. + */ +#define __tbi(nr,arg,arg1...)					\ +({								\ +	register unsigned long __r16 __asm__("$16") = (nr);	\ +	register unsigned long __r17 __asm__("$17"); arg;	\ +	__asm__ __volatile__(					\ +		"call_pal %3 #__tbi"				\ +		:"=r" (__r16),"=r" (__r17)			\ +		:"0" (__r16),"i" (PAL_tbi) ,##arg1		\ +		:"$0", "$1", "$22", "$23", "$24", "$25");	\ +}) + +#define tbi(x,y)	__tbi(x,__r17=(y),"1" (__r17)) +#define tbisi(x)	__tbi(1,__r17=(x),"1" (__r17)) +#define tbisd(x)	__tbi(2,__r17=(x),"1" (__r17)) +#define tbis(x)		__tbi(3,__r17=(x),"1" (__r17)) +#define tbiap()		__tbi(-1, /* no second argument */) +#define tbia()		__tbi(-2, /* no second argument */) + +#endif /* !__ASSEMBLY__ */ +#endif /* __KERNEL__ */ +  #endif /* __ALPHA_PAL_H */ diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h index de98a732683..81a4342d5a3 100644 --- a/arch/alpha/include/asm/pgtable.h +++ b/arch/alpha/include/asm/pgtable.h @@ -15,6 +15,7 @@  #include <asm/page.h>  #include <asm/processor.h>	/* For TASK_SIZE */  #include <asm/machvec.h> +#include <asm/setup.h>  struct mm_struct;  struct vm_area_struct; diff --git a/arch/alpha/include/asm/setup.h b/arch/alpha/include/asm/setup.h index 2e023a4aa31..b50014b3090 100644 --- a/arch/alpha/include/asm/setup.h +++ b/arch/alpha/include/asm/setup.h @@ -3,4 +3,40 @@  #define COMMAND_LINE_SIZE	256 +/* + * We leave one page for the initial stack page, and one page for + * the initial process structure. Also, the console eats 3 MB for + * the initial bootloader (one of which we can reclaim later). + */ +#define BOOT_PCB	0x20000000 +#define BOOT_ADDR	0x20000000 +/* Remove when official MILO sources have ELF support: */ +#define BOOT_SIZE	(16*1024) + +#ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS +#define KERNEL_START_PHYS	0x300000 /* Old bootloaders hardcoded this.  */ +#else +#define KERNEL_START_PHYS	0x1000000 /* required: Wildfire/Titan/Marvel */ +#endif + +#define KERNEL_START	(PAGE_OFFSET+KERNEL_START_PHYS) +#define SWAPPER_PGD	KERNEL_START +#define INIT_STACK	(PAGE_OFFSET+KERNEL_START_PHYS+0x02000) +#define EMPTY_PGT	(PAGE_OFFSET+KERNEL_START_PHYS+0x04000) +#define EMPTY_PGE	(PAGE_OFFSET+KERNEL_START_PHYS+0x08000) +#define ZERO_PGE	(PAGE_OFFSET+KERNEL_START_PHYS+0x0A000) + +#define START_ADDR	(PAGE_OFFSET+KERNEL_START_PHYS+0x10000) + +/* + * This is setup by the secondary bootstrap loader.  Because + * the zero page is zeroed out as soon as the vm system is + * initialized, we need to copy things out into a more permanent + * place. + */ +#define PARAM			ZERO_PGE +#define COMMAND_LINE		((char*)(PARAM + 0x0000)) +#define INITRD_START		(*(unsigned long *) (PARAM+0x100)) +#define INITRD_SIZE		(*(unsigned long *) (PARAM+0x108)) +  #endif diff --git a/arch/alpha/include/asm/special_insns.h b/arch/alpha/include/asm/special_insns.h new file mode 100644 index 00000000000..88d3452b21f --- /dev/null +++ b/arch/alpha/include/asm/special_insns.h @@ -0,0 +1,41 @@ +#ifndef __ALPHA_SPECIAL_INSNS_H +#define __ALPHA_SPECIAL_INSNS_H + +enum implver_enum { +	IMPLVER_EV4, +	IMPLVER_EV5, +	IMPLVER_EV6 +}; + +#ifdef CONFIG_ALPHA_GENERIC +#define implver()				\ +({ unsigned long __implver;			\ +   __asm__ ("implver %0" : "=r"(__implver));	\ +   (enum implver_enum) __implver; }) +#else +/* Try to eliminate some dead code.  */ +#ifdef CONFIG_ALPHA_EV4 +#define implver() IMPLVER_EV4 +#endif +#ifdef CONFIG_ALPHA_EV5 +#define implver() IMPLVER_EV5 +#endif +#if defined(CONFIG_ALPHA_EV6) +#define implver() IMPLVER_EV6 +#endif +#endif + +enum amask_enum { +	AMASK_BWX = (1UL << 0), +	AMASK_FIX = (1UL << 1), +	AMASK_CIX = (1UL << 2), +	AMASK_MAX = (1UL << 8), +	AMASK_PRECISE_TRAP = (1UL << 9), +}; + +#define amask(mask)						\ +({ unsigned long __amask, __input = (mask);			\ +   __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input));	\ +   __amask; }) + +#endif /* __ALPHA_SPECIAL_INSNS_H */ diff --git a/arch/alpha/include/asm/spinlock.h b/arch/alpha/include/asm/spinlock.h index d0faca1e992..3bba21e41b8 100644 --- a/arch/alpha/include/asm/spinlock.h +++ b/arch/alpha/include/asm/spinlock.h @@ -1,7 +1,6 @@  #ifndef _ALPHA_SPINLOCK_H  #define _ALPHA_SPINLOCK_H -#include <asm/system.h>  #include <linux/kernel.h>  #include <asm/current.h> diff --git a/arch/alpha/include/asm/switch_to.h b/arch/alpha/include/asm/switch_to.h new file mode 100644 index 00000000000..44c0d4f2c0b --- /dev/null +++ b/arch/alpha/include/asm/switch_to.h @@ -0,0 +1,14 @@ +#ifndef __ALPHA_SWITCH_TO_H +#define __ALPHA_SWITCH_TO_H + + +struct task_struct; +extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct *); + +#define switch_to(P,N,L)						 \ +  do {									 \ +    (L) = alpha_switch_to(virt_to_phys(&task_thread_info(N)->pcb), (P)); \ +    check_mmu_context();						 \ +  } while (0) + +#endif /* __ALPHA_SWITCH_TO_H */ diff --git a/arch/alpha/include/asm/system.h b/arch/alpha/include/asm/system.h index 9f78e693463..c7270dcff32 100644 --- a/arch/alpha/include/asm/system.h +++ b/arch/alpha/include/asm/system.h @@ -1,354 +1,5 @@ -#ifndef __ALPHA_SYSTEM_H -#define __ALPHA_SYSTEM_H - -#include <asm/pal.h> -#include <asm/page.h> +/* FILE TO BE DELETED. DO NOT ADD STUFF HERE! */  #include <asm/barrier.h> - -/* - * System defines.. Note that this is included both from .c and .S - * files, so it does only defines, not any C code. - */ - -/* - * We leave one page for the initial stack page, and one page for - * the initial process structure. Also, the console eats 3 MB for - * the initial bootloader (one of which we can reclaim later). - */ -#define BOOT_PCB	0x20000000 -#define BOOT_ADDR	0x20000000 -/* Remove when official MILO sources have ELF support: */ -#define BOOT_SIZE	(16*1024) - -#ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS -#define KERNEL_START_PHYS	0x300000 /* Old bootloaders hardcoded this.  */ -#else -#define KERNEL_START_PHYS	0x1000000 /* required: Wildfire/Titan/Marvel */ -#endif - -#define KERNEL_START	(PAGE_OFFSET+KERNEL_START_PHYS) -#define SWAPPER_PGD	KERNEL_START -#define INIT_STACK	(PAGE_OFFSET+KERNEL_START_PHYS+0x02000) -#define EMPTY_PGT	(PAGE_OFFSET+KERNEL_START_PHYS+0x04000) -#define EMPTY_PGE	(PAGE_OFFSET+KERNEL_START_PHYS+0x08000) -#define ZERO_PGE	(PAGE_OFFSET+KERNEL_START_PHYS+0x0A000) - -#define START_ADDR	(PAGE_OFFSET+KERNEL_START_PHYS+0x10000) - -/* - * This is setup by the secondary bootstrap loader.  Because - * the zero page is zeroed out as soon as the vm system is - * initialized, we need to copy things out into a more permanent - * place. - */ -#define PARAM			ZERO_PGE -#define COMMAND_LINE		((char*)(PARAM + 0x0000)) -#define INITRD_START		(*(unsigned long *) (PARAM+0x100)) -#define INITRD_SIZE		(*(unsigned long *) (PARAM+0x108)) - -#ifndef __ASSEMBLY__ -#include <linux/kernel.h> -#define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */ - -/* - * This is the logout header that should be common to all platforms - * (assuming they are running OSF/1 PALcode, I guess). - */ -struct el_common { -	unsigned int	size;		/* size in bytes of logout area */ -	unsigned int	sbz1	: 30;	/* should be zero */ -	unsigned int	err2	:  1;	/* second error */ -	unsigned int	retry	:  1;	/* retry flag */ -	unsigned int	proc_offset;	/* processor-specific offset */ -	unsigned int	sys_offset;	/* system-specific offset */ -	unsigned int	code;		/* machine check code */ -	unsigned int	frame_rev;	/* frame revision */ -}; - -/* Machine Check Frame for uncorrectable errors (Large format) - *      --- This is used to log uncorrectable errors such as - *          double bit ECC errors. - *      --- These errors are detected by both processor and systems. - */ -struct el_common_EV5_uncorrectable_mcheck { -        unsigned long   shadow[8];        /* Shadow reg. 8-14, 25           */ -        unsigned long   paltemp[24];      /* PAL TEMP REGS.                 */ -        unsigned long   exc_addr;         /* Address of excepting instruction*/ -        unsigned long   exc_sum;          /* Summary of arithmetic traps.   */ -        unsigned long   exc_mask;         /* Exception mask (from exc_sum). */ -        unsigned long   pal_base;         /* Base address for PALcode.      */ -        unsigned long   isr;              /* Interrupt Status Reg.          */ -        unsigned long   icsr;             /* CURRENT SETUP OF EV5 IBOX      */ -        unsigned long   ic_perr_stat;     /* I-CACHE Reg. <11> set Data parity -                                                         <12> set TAG parity*/ -        unsigned long   dc_perr_stat;     /* D-CACHE error Reg. Bits set to 1: -                                                     <2> Data error in bank 0 -                                                     <3> Data error in bank 1 -                                                     <4> Tag error in bank 0 -                                                     <5> Tag error in bank 1 */ -        unsigned long   va;               /* Effective VA of fault or miss. */ -        unsigned long   mm_stat;          /* Holds the reason for D-stream  -                                             fault or D-cache parity errors */ -        unsigned long   sc_addr;          /* Address that was being accessed -                                             when EV5 detected Secondary cache -                                             failure.                 */ -        unsigned long   sc_stat;          /* Helps determine if the error was -                                             TAG/Data parity(Secondary Cache)*/ -        unsigned long   bc_tag_addr;      /* Contents of EV5 BC_TAG_ADDR    */ -        unsigned long   ei_addr;          /* Physical address of any transfer -                                             that is logged in EV5 EI_STAT */ -        unsigned long   fill_syndrome;    /* For correcting ECC errors.     */ -        unsigned long   ei_stat;          /* Helps identify reason of any  -                                             processor uncorrectable error -                                             at its external interface.     */ -        unsigned long   ld_lock;          /* Contents of EV5 LD_LOCK register*/ -}; - -struct el_common_EV6_mcheck { -	unsigned int FrameSize;		/* Bytes, including this field */ -	unsigned int FrameFlags;	/* <31> = Retry, <30> = Second Error */ -	unsigned int CpuOffset;		/* Offset to CPU-specific info */ -	unsigned int SystemOffset;	/* Offset to system-specific info */ -	unsigned int MCHK_Code; -	unsigned int MCHK_Frame_Rev; -	unsigned long I_STAT;		/* EV6 Internal Processor Registers */ -	unsigned long DC_STAT;		/* (See the 21264 Spec) */ -	unsigned long C_ADDR; -	unsigned long DC1_SYNDROME; -	unsigned long DC0_SYNDROME; -	unsigned long C_STAT; -	unsigned long C_STS; -	unsigned long MM_STAT; -	unsigned long EXC_ADDR; -	unsigned long IER_CM; -	unsigned long ISUM; -	unsigned long RESERVED0; -	unsigned long PAL_BASE; -	unsigned long I_CTL; -	unsigned long PCTX; -}; - -extern void halt(void) __attribute__((noreturn)); -#define __halt() __asm__ __volatile__ ("call_pal %0 #halt" : : "i" (PAL_halt)) - -#define switch_to(P,N,L)						 \ -  do {									 \ -    (L) = alpha_switch_to(virt_to_phys(&task_thread_info(N)->pcb), (P)); \ -    check_mmu_context();						 \ -  } while (0) - -struct task_struct; -extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct*); - -#define imb() \ -__asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") - -#define draina() \ -__asm__ __volatile__ ("call_pal %0 #draina" : : "i" (PAL_draina) : "memory") - -enum implver_enum { -	IMPLVER_EV4, -	IMPLVER_EV5, -	IMPLVER_EV6 -}; - -#ifdef CONFIG_ALPHA_GENERIC -#define implver()				\ -({ unsigned long __implver;			\ -   __asm__ ("implver %0" : "=r"(__implver));	\ -   (enum implver_enum) __implver; }) -#else -/* Try to eliminate some dead code.  */ -#ifdef CONFIG_ALPHA_EV4 -#define implver() IMPLVER_EV4 -#endif -#ifdef CONFIG_ALPHA_EV5 -#define implver() IMPLVER_EV5 -#endif -#if defined(CONFIG_ALPHA_EV6) -#define implver() IMPLVER_EV6 -#endif -#endif - -enum amask_enum { -	AMASK_BWX = (1UL << 0), -	AMASK_FIX = (1UL << 1), -	AMASK_CIX = (1UL << 2), -	AMASK_MAX = (1UL << 8), -	AMASK_PRECISE_TRAP = (1UL << 9), -}; - -#define amask(mask)						\ -({ unsigned long __amask, __input = (mask);			\ -   __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input));	\ -   __amask; }) - -#define __CALL_PAL_R0(NAME, TYPE)				\ -extern inline TYPE NAME(void)					\ -{								\ -	register TYPE __r0 __asm__("$0");			\ -	__asm__ __volatile__(					\ -		"call_pal %1 # " #NAME				\ -		:"=r" (__r0)					\ -		:"i" (PAL_ ## NAME)				\ -		:"$1", "$16", "$22", "$23", "$24", "$25");	\ -	return __r0;						\ -} - -#define __CALL_PAL_W1(NAME, TYPE0)				\ -extern inline void NAME(TYPE0 arg0)				\ -{								\ -	register TYPE0 __r16 __asm__("$16") = arg0;		\ -	__asm__ __volatile__(					\ -		"call_pal %1 # "#NAME				\ -		: "=r"(__r16)					\ -		: "i"(PAL_ ## NAME), "0"(__r16)			\ -		: "$1", "$22", "$23", "$24", "$25");		\ -} - -#define __CALL_PAL_W2(NAME, TYPE0, TYPE1)			\ -extern inline void NAME(TYPE0 arg0, TYPE1 arg1)			\ -{								\ -	register TYPE0 __r16 __asm__("$16") = arg0;		\ -	register TYPE1 __r17 __asm__("$17") = arg1;		\ -	__asm__ __volatile__(					\ -		"call_pal %2 # "#NAME				\ -		: "=r"(__r16), "=r"(__r17)			\ -		: "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17)	\ -		: "$1", "$22", "$23", "$24", "$25");		\ -} - -#define __CALL_PAL_RW1(NAME, RTYPE, TYPE0)			\ -extern inline RTYPE NAME(TYPE0 arg0)				\ -{								\ -	register RTYPE __r0 __asm__("$0");			\ -	register TYPE0 __r16 __asm__("$16") = arg0;		\ -	__asm__ __volatile__(					\ -		"call_pal %2 # "#NAME				\ -		: "=r"(__r16), "=r"(__r0)			\ -		: "i"(PAL_ ## NAME), "0"(__r16)			\ -		: "$1", "$22", "$23", "$24", "$25");		\ -	return __r0;						\ -} - -#define __CALL_PAL_RW2(NAME, RTYPE, TYPE0, TYPE1)		\ -extern inline RTYPE NAME(TYPE0 arg0, TYPE1 arg1)		\ -{								\ -	register RTYPE __r0 __asm__("$0");			\ -	register TYPE0 __r16 __asm__("$16") = arg0;		\ -	register TYPE1 __r17 __asm__("$17") = arg1;		\ -	__asm__ __volatile__(					\ -		"call_pal %3 # "#NAME				\ -		: "=r"(__r16), "=r"(__r17), "=r"(__r0)		\ -		: "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17)	\ -		: "$1", "$22", "$23", "$24", "$25");		\ -	return __r0;						\ -} - -__CALL_PAL_W1(cflush, unsigned long); -__CALL_PAL_R0(rdmces, unsigned long); -__CALL_PAL_R0(rdps, unsigned long); -__CALL_PAL_R0(rdusp, unsigned long); -__CALL_PAL_RW1(swpipl, unsigned long, unsigned long); -__CALL_PAL_R0(whami, unsigned long); -__CALL_PAL_W2(wrent, void*, unsigned long); -__CALL_PAL_W1(wripir, unsigned long); -__CALL_PAL_W1(wrkgp, unsigned long); -__CALL_PAL_W1(wrmces, unsigned long); -__CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long); -__CALL_PAL_W1(wrusp, unsigned long); -__CALL_PAL_W1(wrvptptr, unsigned long); - -/* - * TB routines.. - */ -#define __tbi(nr,arg,arg1...)					\ -({								\ -	register unsigned long __r16 __asm__("$16") = (nr);	\ -	register unsigned long __r17 __asm__("$17"); arg;	\ -	__asm__ __volatile__(					\ -		"call_pal %3 #__tbi"				\ -		:"=r" (__r16),"=r" (__r17)			\ -		:"0" (__r16),"i" (PAL_tbi) ,##arg1		\ -		:"$0", "$1", "$22", "$23", "$24", "$25");	\ -}) - -#define tbi(x,y)	__tbi(x,__r17=(y),"1" (__r17)) -#define tbisi(x)	__tbi(1,__r17=(x),"1" (__r17)) -#define tbisd(x)	__tbi(2,__r17=(x),"1" (__r17)) -#define tbis(x)		__tbi(3,__r17=(x),"1" (__r17)) -#define tbiap()		__tbi(-1, /* no second argument */) -#define tbia()		__tbi(-2, /* no second argument */) - -/* - * Atomic exchange routines. - */ - -#define __ASM__MB -#define ____xchg(type, args...)		__xchg ## type ## _local(args) -#define ____cmpxchg(type, args...)	__cmpxchg ## type ## _local(args) -#include <asm/xchg.h> - -#define xchg_local(ptr,x)						\ -  ({									\ -     __typeof__(*(ptr)) _x_ = (x);					\ -     (__typeof__(*(ptr))) __xchg_local((ptr), (unsigned long)_x_,	\ -				       sizeof(*(ptr)));			\ -  }) - -#define cmpxchg_local(ptr, o, n)					\ -  ({									\ -     __typeof__(*(ptr)) _o_ = (o);					\ -     __typeof__(*(ptr)) _n_ = (n);					\ -     (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_,	\ -					  (unsigned long)_n_,		\ -					  sizeof(*(ptr)));		\ -  }) - -#define cmpxchg64_local(ptr, o, n)					\ -  ({									\ -	BUILD_BUG_ON(sizeof(*(ptr)) != 8);				\ -	cmpxchg_local((ptr), (o), (n));					\ -  }) - -#ifdef CONFIG_SMP -#undef __ASM__MB -#define __ASM__MB	"\tmb\n" -#endif -#undef ____xchg -#undef ____cmpxchg -#define ____xchg(type, args...)		__xchg ##type(args) -#define ____cmpxchg(type, args...)	__cmpxchg ##type(args) -#include <asm/xchg.h> - -#define xchg(ptr,x)							\ -  ({									\ -     __typeof__(*(ptr)) _x_ = (x);					\ -     (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_,		\ -				 sizeof(*(ptr)));			\ -  }) - -#define cmpxchg(ptr, o, n)						\ -  ({									\ -     __typeof__(*(ptr)) _o_ = (o);					\ -     __typeof__(*(ptr)) _n_ = (n);					\ -     (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,		\ -				    (unsigned long)_n_,	sizeof(*(ptr)));\ -  }) - -#define cmpxchg64(ptr, o, n)						\ -  ({									\ -	BUILD_BUG_ON(sizeof(*(ptr)) != 8);				\ -	cmpxchg((ptr), (o), (n));					\ -  }) - -#undef __ASM__MB -#undef ____cmpxchg - -#define __HAVE_ARCH_CMPXCHG 1 - -#endif /* __ASSEMBLY__ */ - -#define arch_align_stack(x) (x) - -#endif +#include <asm/exec.h> +#include <asm/special_insns.h> +#include <asm/switch_to.h> diff --git a/arch/alpha/include/asm/xchg.h b/arch/alpha/include/asm/xchg.h index beba1b803e0..1d1b436fbff 100644 --- a/arch/alpha/include/asm/xchg.h +++ b/arch/alpha/include/asm/xchg.h @@ -1,4 +1,4 @@ -#ifndef __ALPHA_SYSTEM_H +#ifndef _ALPHA_ATOMIC_H  #error Do not include xchg.h directly!  #else  /* diff --git a/arch/alpha/kernel/core_apecs.c b/arch/alpha/kernel/core_apecs.c index ca46b2c2445..708c831efa7 100644 --- a/arch/alpha/kernel/core_apecs.c +++ b/arch/alpha/kernel/core_apecs.c @@ -21,6 +21,7 @@  #include <asm/ptrace.h>  #include <asm/smp.h> +#include <asm/mce.h>  #include "proto.h"  #include "pci_impl.h" diff --git a/arch/alpha/kernel/core_cia.c b/arch/alpha/kernel/core_cia.c index 1d6ee6c985f..c44339e176c 100644 --- a/arch/alpha/kernel/core_cia.c +++ b/arch/alpha/kernel/core_cia.c @@ -23,6 +23,7 @@  #include <linux/bootmem.h>  #include <asm/ptrace.h> +#include <asm/mce.h>  #include "proto.h"  #include "pci_impl.h" diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c index 2f770e99428..3ada4f7b085 100644 --- a/arch/alpha/kernel/core_t2.c +++ b/arch/alpha/kernel/core_t2.c @@ -21,6 +21,7 @@  #include <asm/ptrace.h>  #include <asm/delay.h> +#include <asm/mce.h>  #include "proto.h"  #include "pci_impl.h" diff --git a/arch/alpha/kernel/err_impl.h b/arch/alpha/kernel/err_impl.h index 0c010ca4611..ae529c41603 100644 --- a/arch/alpha/kernel/err_impl.h +++ b/arch/alpha/kernel/err_impl.h @@ -7,6 +7,8 @@   * 	implementations.   */ +#include <asm/mce.h> +  union el_timestamp;  struct el_subpacket;  struct ev7_lf_subpackets; diff --git a/arch/alpha/kernel/head.S b/arch/alpha/kernel/head.S index 4bdd1d2ff35..c352499ab9f 100644 --- a/arch/alpha/kernel/head.S +++ b/arch/alpha/kernel/head.S @@ -8,14 +8,12 @@   */  #include <linux/init.h> -#include <asm/system.h>  #include <asm/asm-offsets.h> +#include <asm/pal.h> +#include <asm/setup.h>  __HEAD -.globl swapper_pg_dir  .globl _stext -swapper_pg_dir=SWAPPER_PGD -  	.set noreorder  	.globl	__start  	.ent	__start diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index 381431a2d6d..2872accd221 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c @@ -26,7 +26,6 @@  #include <linux/profile.h>  #include <linux/bitops.h> -#include <asm/system.h>  #include <asm/io.h>  #include <asm/uaccess.h> diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c index 51b7fbd9e4c..772ddfdb71a 100644 --- a/arch/alpha/kernel/irq_alpha.c +++ b/arch/alpha/kernel/irq_alpha.c @@ -11,6 +11,7 @@  #include <asm/machvec.h>  #include <asm/dma.h>  #include <asm/perf_event.h> +#include <asm/mce.h>  #include "proto.h"  #include "irq_impl.h" diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index 01e8715e26d..49ee3193477 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c @@ -40,7 +40,6 @@  #include <asm/fpu.h>  #include <asm/io.h>  #include <asm/uaccess.h> -#include <asm/system.h>  #include <asm/sysinfo.h>  #include <asm/thread_info.h>  #include <asm/hwrpb.h> diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c index 89bbe5b4114..153d3fce3e8 100644 --- a/arch/alpha/kernel/process.c +++ b/arch/alpha/kernel/process.c @@ -31,7 +31,6 @@  #include <asm/reg.h>  #include <asm/uaccess.h> -#include <asm/system.h>  #include <asm/io.h>  #include <asm/pgtable.h>  #include <asm/hwrpb.h> diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c index e2af5eb59bb..54616f496ae 100644 --- a/arch/alpha/kernel/ptrace.c +++ b/arch/alpha/kernel/ptrace.c @@ -16,7 +16,6 @@  #include <asm/uaccess.h>  #include <asm/pgtable.h> -#include <asm/system.h>  #include <asm/fpu.h>  #include "proto.h" diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c index 32de56067e6..9e3107cc5eb 100644 --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c @@ -55,7 +55,6 @@ static struct notifier_block alpha_panic_block = {  #include <asm/uaccess.h>  #include <asm/pgtable.h> -#include <asm/system.h>  #include <asm/hwrpb.h>  #include <asm/dma.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c index 8606d77e516..118dc6af180 100644 --- a/arch/alpha/kernel/sys_alcor.c +++ b/arch/alpha/kernel/sys_alcor.c @@ -18,7 +18,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/io.h>  #include <asm/dma.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c index 1029619fb6c..4c50f8f40cb 100644 --- a/arch/alpha/kernel/sys_cabriolet.c +++ b/arch/alpha/kernel/sys_cabriolet.c @@ -18,7 +18,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c index 13f0717fc7f..5bf401f7ea9 100644 --- a/arch/alpha/kernel/sys_dp264.c +++ b/arch/alpha/kernel/sys_dp264.c @@ -21,7 +21,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c index 3c6c13cd8b1..ad40a425e84 100644 --- a/arch/alpha/kernel/sys_eb64p.c +++ b/arch/alpha/kernel/sys_eb64p.c @@ -17,7 +17,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c index 35f480db771..79d69d7f63f 100644 --- a/arch/alpha/kernel/sys_eiger.c +++ b/arch/alpha/kernel/sys_eiger.c @@ -18,7 +18,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c index 7f1a87f176e..5a0af11b3a6 100644 --- a/arch/alpha/kernel/sys_jensen.c +++ b/arch/alpha/kernel/sys_jensen.c @@ -15,7 +15,6 @@  #include <linux/init.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #define __EXTERN_INLINE inline  #include <asm/io.h> diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c index 95cfc83ece8..e8b4f6f8cbb 100644 --- a/arch/alpha/kernel/sys_marvel.c +++ b/arch/alpha/kernel/sys_marvel.c @@ -13,7 +13,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_miata.c b/arch/alpha/kernel/sys_miata.c index 258da684670..d5b9776a608 100644 --- a/arch/alpha/kernel/sys_miata.c +++ b/arch/alpha/kernel/sys_miata.c @@ -17,7 +17,6 @@  #include <linux/reboot.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c index c0fd7284dec..5e82dc1ad6f 100644 --- a/arch/alpha/kernel/sys_mikasa.c +++ b/arch/alpha/kernel/sys_mikasa.c @@ -17,7 +17,7 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h> +#include <asm/mce.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c index 4112200307c..4d4c046f708 100644 --- a/arch/alpha/kernel/sys_nautilus.c +++ b/arch/alpha/kernel/sys_nautilus.c @@ -35,7 +35,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c index 21725283cdd..063e594fd96 100644 --- a/arch/alpha/kernel/sys_noritake.c +++ b/arch/alpha/kernel/sys_noritake.c @@ -18,7 +18,7 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h> +#include <asm/mce.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c index a125d6bea7e..dfd510ae5d8 100644 --- a/arch/alpha/kernel/sys_rawhide.c +++ b/arch/alpha/kernel/sys_rawhide.c @@ -16,7 +16,6 @@  #include <linux/init.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_ruffian.c b/arch/alpha/kernel/sys_ruffian.c index 2581cbec6fc..a3f48525717 100644 --- a/arch/alpha/kernel/sys_ruffian.c +++ b/arch/alpha/kernel/sys_ruffian.c @@ -18,7 +18,6 @@  #include <linux/init.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c index b172b27555a..08ee737d4fb 100644 --- a/arch/alpha/kernel/sys_rx164.c +++ b/arch/alpha/kernel/sys_rx164.c @@ -17,7 +17,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c index 98d1dbffe98..8a0aa6d67b5 100644 --- a/arch/alpha/kernel/sys_sable.c +++ b/arch/alpha/kernel/sys_sable.c @@ -16,7 +16,6 @@  #include <linux/init.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_sio.c b/arch/alpha/kernel/sys_sio.c index 47bec1e97d1..febd24eba7a 100644 --- a/arch/alpha/kernel/sys_sio.c +++ b/arch/alpha/kernel/sys_sio.c @@ -20,7 +20,6 @@  #include <asm/compiler.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_sx164.c b/arch/alpha/kernel/sys_sx164.c index 73e1c317afc..d063b360efe 100644 --- a/arch/alpha/kernel/sys_sx164.c +++ b/arch/alpha/kernel/sys_sx164.c @@ -17,7 +17,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> @@ -26,6 +25,7 @@  #include <asm/core_cia.h>  #include <asm/hwrpb.h>  #include <asm/tlbflush.h> +#include <asm/special_insns.h>  #include "proto.h"  #include "irq_impl.h" diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c index 2ae99ad6975..dd0f1eae3c6 100644 --- a/arch/alpha/kernel/sys_takara.c +++ b/arch/alpha/kernel/sys_takara.c @@ -16,7 +16,6 @@  #include <linux/init.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c index f47b30a2a11..9de928c6ef9 100644 --- a/arch/alpha/kernel/sys_titan.c +++ b/arch/alpha/kernel/sys_titan.c @@ -21,7 +21,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c index 17c85a65e7b..ee187488777 100644 --- a/arch/alpha/kernel/sys_wildfire.c +++ b/arch/alpha/kernel/sys_wildfire.c @@ -15,7 +15,6 @@  #include <linux/bitops.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include <asm/dma.h>  #include <asm/irq.h>  #include <asm/mmu_context.h> diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index 0414e021a91..80d987c0e9a 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c @@ -24,6 +24,7 @@  #include <asm/sysinfo.h>  #include <asm/hwrpb.h>  #include <asm/mmu_context.h> +#include <asm/special_insns.h>  #include "proto.h" diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S index f937ad12385..647b84c1538 100644 --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S @@ -2,6 +2,7 @@  #include <asm/thread_info.h>  #include <asm/cache.h>  #include <asm/page.h> +#include <asm/setup.h>  OUTPUT_FORMAT("elf64-alpha")  OUTPUT_ARCH(alpha) @@ -25,6 +26,7 @@ SECTIONS  		*(.fixup)  		*(.gnu.warning)  	} :kernel +	swapper_pg_dir = SWAPPER_PGD;  	_etext = .;	/* End of text section */  	NOTES :kernel :note diff --git a/arch/alpha/lib/stacktrace.c b/arch/alpha/lib/stacktrace.c index 6d432e42aed..5e832161e6d 100644 --- a/arch/alpha/lib/stacktrace.c +++ b/arch/alpha/lib/stacktrace.c @@ -1,5 +1,4 @@  #include <linux/kernel.h> -#include <asm/system.h>  typedef unsigned int instr; diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index fadd5f882ff..5eecab1a84e 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c @@ -24,7 +24,6 @@  #include <linux/interrupt.h>  #include <linux/module.h> -#include <asm/system.h>  #include <asm/uaccess.h>  extern void die_if_kernel(char *,struct pt_regs *,long, unsigned long *); diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c index 69d0c5761e2..1ad6ca74bed 100644 --- a/arch/alpha/mm/init.c +++ b/arch/alpha/mm/init.c @@ -22,7 +22,6 @@  #include <linux/vmalloc.h>  #include <linux/gfp.h> -#include <asm/system.h>  #include <asm/uaccess.h>  #include <asm/pgtable.h>  #include <asm/pgalloc.h> @@ -31,6 +30,7 @@  #include <asm/mmu_context.h>  #include <asm/console.h>  #include <asm/tlb.h> +#include <asm/setup.h>  extern void die_if_kernel(char *,struct pt_regs *,long); diff --git a/arch/alpha/oprofile/common.c b/arch/alpha/oprofile/common.c index bd8ac533a50..a0a5d27aa21 100644 --- a/arch/alpha/oprofile/common.c +++ b/arch/alpha/oprofile/common.c @@ -12,7 +12,6 @@  #include <linux/smp.h>  #include <linux/errno.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include "op_impl.h" diff --git a/arch/alpha/oprofile/op_model_ev4.c b/arch/alpha/oprofile/op_model_ev4.c index 80d764dbf22..18aa9b4f94f 100644 --- a/arch/alpha/oprofile/op_model_ev4.c +++ b/arch/alpha/oprofile/op_model_ev4.c @@ -11,7 +11,6 @@  #include <linux/init.h>  #include <linux/smp.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include "op_impl.h" diff --git a/arch/alpha/oprofile/op_model_ev5.c b/arch/alpha/oprofile/op_model_ev5.c index ceea6e1ad79..c32f8a0ad92 100644 --- a/arch/alpha/oprofile/op_model_ev5.c +++ b/arch/alpha/oprofile/op_model_ev5.c @@ -11,7 +11,6 @@  #include <linux/init.h>  #include <linux/smp.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include "op_impl.h" diff --git a/arch/alpha/oprofile/op_model_ev6.c b/arch/alpha/oprofile/op_model_ev6.c index 0869f85f574..1c84cc257fc 100644 --- a/arch/alpha/oprofile/op_model_ev6.c +++ b/arch/alpha/oprofile/op_model_ev6.c @@ -11,7 +11,6 @@  #include <linux/init.h>  #include <linux/smp.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include "op_impl.h" diff --git a/arch/alpha/oprofile/op_model_ev67.c b/arch/alpha/oprofile/op_model_ev67.c index 5b9d178e022..34a57a12655 100644 --- a/arch/alpha/oprofile/op_model_ev67.c +++ b/arch/alpha/oprofile/op_model_ev67.c @@ -12,7 +12,6 @@  #include <linux/init.h>  #include <linux/smp.h>  #include <asm/ptrace.h> -#include <asm/system.h>  #include "op_impl.h"  |