diff options
Diffstat (limited to 'arch/mips/include/asm')
| -rw-r--r-- | arch/mips/include/asm/bitops.h | 1 | ||||
| -rw-r--r-- | arch/mips/include/asm/cmpxchg.h | 1 | ||||
| -rw-r--r-- | arch/mips/include/asm/cpu.h | 7 | ||||
| -rw-r--r-- | arch/mips/include/asm/gic.h | 15 | ||||
| -rw-r--r-- | arch/mips/include/asm/inst.h | 4 | ||||
| -rw-r--r-- | arch/mips/include/asm/io.h | 1 | ||||
| -rw-r--r-- | arch/mips/include/asm/irq.h | 1 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/mips-boards/maltaint.h | 10 | ||||
| -rw-r--r-- | arch/mips/include/asm/mipsmtregs.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/switch_to.h | 6 | ||||
| -rw-r--r-- | arch/mips/include/asm/thread_info.h | 4 | 
12 files changed, 41 insertions, 13 deletions
diff --git a/arch/mips/include/asm/bitops.h b/arch/mips/include/asm/bitops.h index 2e1ad4c652b..82ad35ce2b4 100644 --- a/arch/mips/include/asm/bitops.h +++ b/arch/mips/include/asm/bitops.h @@ -17,7 +17,6 @@  #include <linux/irqflags.h>  #include <linux/types.h>  #include <asm/barrier.h> -#include <asm/bug.h>  #include <asm/byteorder.h>		/* sigh ... */  #include <asm/cpu-features.h>  #include <asm/sgidefs.h> diff --git a/arch/mips/include/asm/cmpxchg.h b/arch/mips/include/asm/cmpxchg.h index 285a41fa0b1..eee10dc07ac 100644 --- a/arch/mips/include/asm/cmpxchg.h +++ b/arch/mips/include/asm/cmpxchg.h @@ -8,6 +8,7 @@  #ifndef __ASM_CMPXCHG_H  #define __ASM_CMPXCHG_H +#include <linux/bug.h>  #include <linux/irqflags.h>  #include <asm/war.h> diff --git a/arch/mips/include/asm/cpu.h b/arch/mips/include/asm/cpu.h index f9fa2a479dd..95e40c1e8ed 100644 --- a/arch/mips/include/asm/cpu.h +++ b/arch/mips/include/asm/cpu.h @@ -94,6 +94,7 @@  #define PRID_IMP_24KE		0x9600  #define PRID_IMP_74K		0x9700  #define PRID_IMP_1004K		0x9900 +#define PRID_IMP_M14KC		0x9c00  /*   * These are the PRID's for when 23:16 == PRID_COMP_SIBYTE @@ -260,12 +261,12 @@ enum cpu_type_enum {  	 */  	CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K,  	CPU_ALCHEMY, CPU_PR4450, CPU_BMIPS32, CPU_BMIPS3300, CPU_BMIPS4350, -	CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, +	CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, CPU_M14KC,  	/*  	 * MIPS64 class processors  	 */ -	CPU_5KC, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2, +	CPU_5KC, CPU_5KE, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2,  	CPU_CAVIUM_OCTEON, CPU_CAVIUM_OCTEON_PLUS, CPU_CAVIUM_OCTEON2,  	CPU_XLR, CPU_XLP, @@ -288,7 +289,7 @@ enum cpu_type_enum {  #define MIPS_CPU_ISA_M64R2	0x00000100  #define MIPS_CPU_ISA_32BIT (MIPS_CPU_ISA_I | MIPS_CPU_ISA_II | \ -	MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2 ) +	MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2)  #define MIPS_CPU_ISA_64BIT (MIPS_CPU_ISA_III | MIPS_CPU_ISA_IV | \  	MIPS_CPU_ISA_V | MIPS_CPU_ISA_M64R1 | MIPS_CPU_ISA_M64R2) diff --git a/arch/mips/include/asm/gic.h b/arch/mips/include/asm/gic.h index 86548da650e..991b659e254 100644 --- a/arch/mips/include/asm/gic.h +++ b/arch/mips/include/asm/gic.h @@ -206,7 +206,7 @@  #define GIC_VPE_EIC_SHADOW_SET_BASE	0x0100  #define GIC_VPE_EIC_SS(intr) \ -	(GIC_EIC_SHADOW_SET_BASE + (4 * intr)) +	(GIC_VPE_EIC_SHADOW_SET_BASE + (4 * intr))  #define GIC_VPE_EIC_VEC_BASE		0x0800  #define GIC_VPE_EIC_VEC(intr) \ @@ -330,6 +330,17 @@ struct gic_intr_map {  #define GIC_FLAG_TRANSPARENT   0x02  }; +/* + * This is only used in EIC mode. This helps to figure out which + * shared interrupts we need to process when we get a vector interrupt. + */ +#define GIC_MAX_SHARED_INTR  0x5 +struct gic_shared_intr_map { +	unsigned int num_shared_intr; +	unsigned int intr_list[GIC_MAX_SHARED_INTR]; +	unsigned int local_intr_mask; +}; +  extern void gic_init(unsigned long gic_base_addr,  	unsigned long gic_addrspace_size, struct gic_intr_map *intrmap,  	unsigned int intrmap_size, unsigned int irqbase); @@ -338,5 +349,7 @@ extern unsigned int gic_get_int(void);  extern void gic_send_ipi(unsigned int intr);  extern unsigned int plat_ipi_call_int_xlate(unsigned int);  extern unsigned int plat_ipi_resched_int_xlate(unsigned int); +extern void gic_bind_eic_interrupt(int irq, int set); +extern unsigned int gic_get_timer_pending(void);  #endif /* _ASM_GICREGS_H */ diff --git a/arch/mips/include/asm/inst.h b/arch/mips/include/asm/inst.h index 7ebfc392e58..ab84064283d 100644 --- a/arch/mips/include/asm/inst.h +++ b/arch/mips/include/asm/inst.h @@ -251,7 +251,7 @@ struct f_format {	/* FPU register format */  	unsigned int func : 6;  }; -struct ma_format {	/* FPU multipy and add format (MIPS IV) */ +struct ma_format {	/* FPU multiply and add format (MIPS IV) */  	unsigned int opcode : 6;  	unsigned int fr : 5;  	unsigned int ft : 5; @@ -324,7 +324,7 @@ struct f_format {	/* FPU register format */  	unsigned int opcode : 6;  }; -struct ma_format {	/* FPU multipy and add format (MIPS IV) */ +struct ma_format {	/* FPU multiply and add format (MIPS IV) */  	unsigned int fmt : 2;  	unsigned int func : 4;  	unsigned int fd : 5; diff --git a/arch/mips/include/asm/io.h b/arch/mips/include/asm/io.h index a58f22998a8..29d9c23c20c 100644 --- a/arch/mips/include/asm/io.h +++ b/arch/mips/include/asm/io.h @@ -17,6 +17,7 @@  #include <linux/types.h>  #include <asm/addrspace.h> +#include <asm/bug.h>  #include <asm/byteorder.h>  #include <asm/cpu.h>  #include <asm/cpu-features.h> diff --git a/arch/mips/include/asm/irq.h b/arch/mips/include/asm/irq.h index fb698dc09bc..78dbb8a86da 100644 --- a/arch/mips/include/asm/irq.h +++ b/arch/mips/include/asm/irq.h @@ -136,6 +136,7 @@ extern void free_irqno(unsigned int irq);   * IE7.  Since R2 their number has to be read from the c0_intctl register.   */  #define CP0_LEGACY_COMPARE_IRQ 7 +#define CP0_LEGACY_PERFCNT_IRQ 7  extern int cp0_compare_irq;  extern int cp0_compare_irq_shift; diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h index 94d4faad29a..fdcd78ca1b0 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h @@ -99,7 +99,7 @@  #define CKCTL_6368_USBH_CLK_EN		(1 << 15)  #define CKCTL_6368_DISABLE_GLESS_EN	(1 << 16)  #define CKCTL_6368_NAND_CLK_EN		(1 << 17) -#define CKCTL_6368_IPSEC_CLK_EN		(1 << 17) +#define CKCTL_6368_IPSEC_CLK_EN		(1 << 18)  #define CKCTL_6368_ALL_SAFE_EN		(CKCTL_6368_SWPKT_USB_EN |	\  					CKCTL_6368_SWPKT_SAR_EN |	\ diff --git a/arch/mips/include/asm/mips-boards/maltaint.h b/arch/mips/include/asm/mips-boards/maltaint.h index d11aa02a956..5447d9fc421 100644 --- a/arch/mips/include/asm/mips-boards/maltaint.h +++ b/arch/mips/include/asm/mips-boards/maltaint.h @@ -86,6 +86,16 @@  #define GIC_CPU_INT4		4 /* .			*/  #define GIC_CPU_INT5		5 /* Core Interrupt 5   */ +/* MALTA GIC local interrupts */ +#define GIC_INT_TMR             (GIC_CPU_INT5) +#define GIC_INT_PERFCTR         (GIC_CPU_INT5) + +/* GIC constants */ +/* Add 2 to convert non-eic hw int # to eic vector # */ +#define GIC_CPU_TO_VEC_OFFSET   (2) +/* If we map an intr to pin X, GIC will actually generate vector X+1 */ +#define GIC_PIN_TO_VEC_OFFSET   (1) +  #define GIC_EXT_INTR(x)		x  /* External Interrupts used for IPI */ diff --git a/arch/mips/include/asm/mipsmtregs.h b/arch/mips/include/asm/mipsmtregs.h index c9420aa97e3..e71ff4c317f 100644 --- a/arch/mips/include/asm/mipsmtregs.h +++ b/arch/mips/include/asm/mipsmtregs.h @@ -48,7 +48,7 @@  #define CP0_VPECONF0		$1, 2  #define CP0_VPECONF1		$1, 3  #define CP0_YQMASK		$1, 4 -#define CP0_VPESCHEDULE	$1, 5 +#define CP0_VPESCHEDULE		$1, 5  #define CP0_VPESCHEFBK		$1, 6  #define CP0_TCSTATUS		$2, 1  #define CP0_TCBIND		$2, 2 diff --git a/arch/mips/include/asm/switch_to.h b/arch/mips/include/asm/switch_to.h index 5d33621b565..4f8ddba8c36 100644 --- a/arch/mips/include/asm/switch_to.h +++ b/arch/mips/include/asm/switch_to.h @@ -22,7 +22,7 @@ struct task_struct;   * switch_to(n) should switch tasks to task nr n, first   * checking that n isn't the current task, in which case it does nothing.   */ -extern asmlinkage void *resume(void *last, void *next, void *next_ti); +extern asmlinkage void *resume(void *last, void *next, void *next_ti, u32 __usedfpu);  extern unsigned int ll_bit;  extern struct task_struct *ll_task; @@ -66,11 +66,13 @@ do {									\  #define switch_to(prev, next, last)					\  do {									\ +	u32 __usedfpu;							\  	__mips_mt_fpaff_switch_to(prev);				\  	if (cpu_has_dsp)						\  		__save_dsp(prev);					\  	__clear_software_ll_bit();					\ -	(last) = resume(prev, next, task_thread_info(next));		\ +	__usedfpu = test_and_clear_tsk_thread_flag(prev, TIF_USEDFPU);	\ +	(last) = resume(prev, next, task_thread_info(next), __usedfpu);	\  } while (0)  #define finish_arch_switch(prev)					\ diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h index e2eca7d1059..ca97e0ecb64 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h @@ -60,6 +60,8 @@ struct thread_info {  register struct thread_info *__current_thread_info __asm__("$28");  #define current_thread_info()  __current_thread_info +#endif /* !__ASSEMBLY__ */ +  /* thread information allocation */  #if defined(CONFIG_PAGE_SIZE_4KB) && defined(CONFIG_32BIT)  #define THREAD_SIZE_ORDER (1) @@ -85,8 +87,6 @@ register struct thread_info *__current_thread_info __asm__("$28");  #define STACK_WARN	(THREAD_SIZE / 8) -#endif /* !__ASSEMBLY__ */ -  #define PREEMPT_ACTIVE		0x10000000  /*  |