diff options
Diffstat (limited to 'arch/mips/include/asm')
| -rw-r--r-- | arch/mips/include/asm/abi.h | 6 | ||||
| -rw-r--r-- | arch/mips/include/asm/cmpxchg.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/elf.h | 5 | ||||
| -rw-r--r-- | arch/mips/include/asm/fpu_emulator.h | 6 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h | 15 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h | 6 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | 4 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-loongson/loongson.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-sibyte/war.h | 6 | ||||
| -rw-r--r-- | arch/mips/include/asm/mmu.h | 5 | ||||
| -rw-r--r-- | arch/mips/include/asm/mmu_context.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/page.h | 6 | ||||
| -rw-r--r-- | arch/mips/include/asm/pgtable-64.h | 9 | ||||
| -rw-r--r-- | arch/mips/include/asm/processor.h | 11 | ||||
| -rw-r--r-- | arch/mips/include/asm/ptrace.h | 4 | ||||
| -rw-r--r-- | arch/mips/include/asm/stackframe.h | 19 | ||||
| -rw-r--r-- | arch/mips/include/asm/uasm.h | 20 | ||||
| -rw-r--r-- | arch/mips/include/asm/vdso.h | 29 | 
20 files changed, 144 insertions, 17 deletions
diff --git a/arch/mips/include/asm/abi.h b/arch/mips/include/asm/abi.h index 1dd74fbdc09..9252d9b50e5 100644 --- a/arch/mips/include/asm/abi.h +++ b/arch/mips/include/asm/abi.h @@ -13,12 +13,14 @@  #include <asm/siginfo.h>  struct mips_abi { -	int (* const setup_frame)(struct k_sigaction * ka, +	int (* const setup_frame)(void *sig_return, struct k_sigaction *ka,  	                          struct pt_regs *regs, int signr,  	                          sigset_t *set); -	int (* const setup_rt_frame)(struct k_sigaction * ka, +	const unsigned long	signal_return_offset; +	int (* const setup_rt_frame)(void *sig_return, struct k_sigaction *ka,  	                       struct pt_regs *regs, int signr,  	                       sigset_t *set, siginfo_t *info); +	const unsigned long	rt_signal_return_offset;  	const unsigned long	restart;  }; diff --git a/arch/mips/include/asm/cmpxchg.h b/arch/mips/include/asm/cmpxchg.h index ed9aaaaf074..2d28017e95d 100644 --- a/arch/mips/include/asm/cmpxchg.h +++ b/arch/mips/include/asm/cmpxchg.h @@ -16,7 +16,7 @@  ({									\  	__typeof(*(m)) __ret;						\  									\ -	if (kernel_uses_llsc && R10000_LLSC_WAR) {				\ +	if (kernel_uses_llsc && R10000_LLSC_WAR) {			\  		__asm__ __volatile__(					\  		"	.set	push				\n"	\  		"	.set	noat				\n"	\ diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h index e53d7bed5cd..ea77a42c5f8 100644 --- a/arch/mips/include/asm/elf.h +++ b/arch/mips/include/asm/elf.h @@ -310,6 +310,7 @@ do {									\  #endif /* CONFIG_64BIT */ +struct pt_regs;  struct task_struct;  extern void elf_dump_regs(elf_greg_t *, struct pt_regs *regs); @@ -367,4 +368,8 @@ extern const char *__elf_platform;  #define ELF_ET_DYN_BASE         (TASK_SIZE / 3 * 2)  #endif +#define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1 +struct linux_binprm; +extern int arch_setup_additional_pages(struct linux_binprm *bprm, +				       int uses_interp);  #endif /* _ASM_ELF_H */ diff --git a/arch/mips/include/asm/fpu_emulator.h b/arch/mips/include/asm/fpu_emulator.h index aecada6f611..3b409270556 100644 --- a/arch/mips/include/asm/fpu_emulator.h +++ b/arch/mips/include/asm/fpu_emulator.h @@ -41,7 +41,11 @@ struct mips_fpu_emulator_stats {  DECLARE_PER_CPU(struct mips_fpu_emulator_stats, fpuemustats);  #define MIPS_FPU_EMU_INC_STATS(M)					\ -	cpu_local_wrap(__local_inc(&__get_cpu_var(fpuemustats).M)) +do {									\ +	preempt_disable();						\ +	__local_inc(&__get_cpu_var(fpuemustats).M);			\ +	preempt_enable();						\ +} while (0)  #else  #define MIPS_FPU_EMU_INC_STATS(M) do { } while (0) diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h index b12c4aca2cc..96a2391ad85 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h @@ -85,6 +85,7 @@ enum bcm63xx_regs_set {  	RSET_TIMER,  	RSET_WDT,  	RSET_UART0, +	RSET_UART1,  	RSET_GPIO,  	RSET_SPI,  	RSET_UDC0, @@ -123,6 +124,7 @@ enum bcm63xx_regs_set {  #define BCM_6338_TIMER_BASE		(0xfffe0200)  #define BCM_6338_WDT_BASE		(0xfffe021c)  #define BCM_6338_UART0_BASE		(0xfffe0300) +#define BCM_6338_UART1_BASE		(0xdeadbeef)  #define BCM_6338_GPIO_BASE		(0xfffe0400)  #define BCM_6338_SPI_BASE		(0xfffe0c00)  #define BCM_6338_UDC0_BASE		(0xdeadbeef) @@ -153,6 +155,7 @@ enum bcm63xx_regs_set {  #define BCM_6345_TIMER_BASE		(0xfffe0200)  #define BCM_6345_WDT_BASE		(0xfffe021c)  #define BCM_6345_UART0_BASE		(0xfffe0300) +#define BCM_6345_UART1_BASE		(0xdeadbeef)  #define BCM_6345_GPIO_BASE		(0xfffe0400)  #define BCM_6345_SPI_BASE		(0xdeadbeef)  #define BCM_6345_UDC0_BASE		(0xdeadbeef) @@ -182,6 +185,7 @@ enum bcm63xx_regs_set {  #define BCM_6348_TIMER_BASE		(0xfffe0200)  #define BCM_6348_WDT_BASE		(0xfffe021c)  #define BCM_6348_UART0_BASE		(0xfffe0300) +#define BCM_6348_UART1_BASE		(0xdeadbeef)  #define BCM_6348_GPIO_BASE		(0xfffe0400)  #define BCM_6348_SPI_BASE		(0xfffe0c00)  #define BCM_6348_UDC0_BASE		(0xfffe1000) @@ -208,6 +212,7 @@ enum bcm63xx_regs_set {  #define BCM_6358_TIMER_BASE		(0xfffe0040)  #define BCM_6358_WDT_BASE		(0xfffe005c)  #define BCM_6358_UART0_BASE		(0xfffe0100) +#define BCM_6358_UART1_BASE		(0xfffe0120)  #define BCM_6358_GPIO_BASE		(0xfffe0080)  #define BCM_6358_SPI_BASE		(0xdeadbeef)  #define BCM_6358_UDC0_BASE		(0xfffe0800) @@ -246,6 +251,8 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)  		return BCM_6338_WDT_BASE;  	case RSET_UART0:  		return BCM_6338_UART0_BASE; +	case RSET_UART1: +		return BCM_6338_UART1_BASE;  	case RSET_GPIO:  		return BCM_6338_GPIO_BASE;  	case RSET_SPI: @@ -292,6 +299,8 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)  		return BCM_6345_WDT_BASE;  	case RSET_UART0:  		return BCM_6345_UART0_BASE; +	case RSET_UART1: +		return BCM_6345_UART1_BASE;  	case RSET_GPIO:  		return BCM_6345_GPIO_BASE;  	case RSET_SPI: @@ -338,6 +347,8 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)  		return BCM_6348_WDT_BASE;  	case RSET_UART0:  		return BCM_6348_UART0_BASE; +	case RSET_UART1: +		return BCM_6348_UART1_BASE;  	case RSET_GPIO:  		return BCM_6348_GPIO_BASE;  	case RSET_SPI: @@ -384,6 +395,8 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)  		return BCM_6358_WDT_BASE;  	case RSET_UART0:  		return BCM_6358_UART0_BASE; +	case RSET_UART1: +		return BCM_6358_UART1_BASE;  	case RSET_GPIO:  		return BCM_6358_GPIO_BASE;  	case RSET_SPI: @@ -429,6 +442,7 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set)  enum bcm63xx_irq {  	IRQ_TIMER = 0,  	IRQ_UART0, +	IRQ_UART1,  	IRQ_DSL,  	IRQ_ENET0,  	IRQ_ENET1, @@ -510,6 +524,7 @@ enum bcm63xx_irq {   */  #define BCM_6358_TIMER_IRQ		(IRQ_INTERNAL_BASE + 0)  #define BCM_6358_UART0_IRQ		(IRQ_INTERNAL_BASE + 2) +#define BCM_6358_UART1_IRQ		(IRQ_INTERNAL_BASE + 3)  #define BCM_6358_OHCI0_IRQ		(IRQ_INTERNAL_BASE + 5)  #define BCM_6358_ENET1_IRQ		(IRQ_INTERNAL_BASE + 6)  #define BCM_6358_ENET0_IRQ		(IRQ_INTERNAL_BASE + 8) diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h new file mode 100644 index 00000000000..23c705baf17 --- /dev/null +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h @@ -0,0 +1,6 @@ +#ifndef BCM63XX_DEV_UART_H_ +#define BCM63XX_DEV_UART_H_ + +int bcm63xx_uart_register(unsigned int id); + +#endif /* BCM63XX_DEV_UART_H_ */ diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h index 76a0b7216af..43d4da0b1e9 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h @@ -10,6 +10,10 @@ static inline unsigned long bcm63xx_gpio_count(void)  	switch (bcm63xx_get_cpu_id()) {  	case BCM6358_CPU_ID:  		return 40; +	case BCM6338_CPU_ID: +		return 8; +	case BCM6345_CPU_ID: +		return 16;  	case BCM6348_CPU_ID:  	default:  		return 37; diff --git a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h index 6479090a410..474daaa5349 100644 --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h @@ -45,6 +45,8 @@ struct board_info {  	unsigned int	has_ohci0:1;  	unsigned int	has_ehci0:1;  	unsigned int	has_dsp:1; +	unsigned int	has_uart0:1; +	unsigned int	has_uart1:1;  	/* ethernet config */  	struct bcm63xx_enet_platform_data enet0; diff --git a/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h b/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h index 71742bac940..f453c01d067 100644 --- a/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h +++ b/arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h @@ -24,7 +24,7 @@  #define cpu_has_smartmips		0  #define cpu_has_vtag_icache		0 -#if !defined(BCMCPU_RUNTIME_DETECT) && (defined(CONFIG_BCMCPU_IS_6348) || defined(CONFIG_CPU_IS_6338) || defined(CONFIG_CPU_IS_BCM6345)) +#if !defined(BCMCPU_RUNTIME_DETECT) && (defined(CONFIG_BCM63XX_CPU_6348) || defined(CONFIG_BCM63XX_CPU_6345) || defined(CONFIG_BCM63XX_CPU_6338))  #define cpu_has_dc_aliases		0  #endif diff --git a/arch/mips/include/asm/mach-loongson/loongson.h b/arch/mips/include/asm/mach-loongson/loongson.h index 1cf7b1401ee..fcdbe3a4ce1 100644 --- a/arch/mips/include/asm/mach-loongson/loongson.h +++ b/arch/mips/include/asm/mach-loongson/loongson.h @@ -307,7 +307,7 @@ extern unsigned long _loongson_addrwincfg_base;   */  #define LOONGSON_ADDRWIN_CFG(s, d, w, src, dst, size) do {\  	s##_WIN##w##_BASE = (src); \ -	s##_WIN##w##_MMAP = (src) | ADDRWIN_MAP_DST_##d; \ +	s##_WIN##w##_MMAP = (dst) | ADDRWIN_MAP_DST_##d; \  	s##_WIN##w##_MASK = ~(size-1); \  } while (0) diff --git a/arch/mips/include/asm/mach-sibyte/war.h b/arch/mips/include/asm/mach-sibyte/war.h index 7950ef4f032..743385d7b5f 100644 --- a/arch/mips/include/asm/mach-sibyte/war.h +++ b/arch/mips/include/asm/mach-sibyte/war.h @@ -16,7 +16,11 @@  #if defined(CONFIG_SB1_PASS_1_WORKAROUNDS) || \      defined(CONFIG_SB1_PASS_2_WORKAROUNDS) -#define BCM1250_M3_WAR	1 +#ifndef __ASSEMBLY__ +extern int sb1250_m3_workaround_needed(void); +#endif + +#define BCM1250_M3_WAR	sb1250_m3_workaround_needed()  #define SIBYTE_1956_WAR	1  #else diff --git a/arch/mips/include/asm/mmu.h b/arch/mips/include/asm/mmu.h index 4063edd7962..c436138945a 100644 --- a/arch/mips/include/asm/mmu.h +++ b/arch/mips/include/asm/mmu.h @@ -1,6 +1,9 @@  #ifndef __ASM_MMU_H  #define __ASM_MMU_H -typedef unsigned long mm_context_t[NR_CPUS]; +typedef struct { +	unsigned long asid[NR_CPUS]; +	void *vdso; +} mm_context_t;  #endif /* __ASM_MMU_H */ diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h index 145bb81ccaa..d9592733a7b 100644 --- a/arch/mips/include/asm/mmu_context.h +++ b/arch/mips/include/asm/mmu_context.h @@ -104,7 +104,7 @@ extern unsigned long smtc_asid_mask;  #endif -#define cpu_context(cpu, mm)	((mm)->context[cpu]) +#define cpu_context(cpu, mm)	((mm)->context.asid[cpu])  #define cpu_asid(cpu, mm)	(cpu_context((cpu), (mm)) & ASID_MASK)  #define asid_cache(cpu)		(cpu_data[cpu].asid_cache) diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h index ac32572430f..a16beafcea9 100644 --- a/arch/mips/include/asm/page.h +++ b/arch/mips/include/asm/page.h @@ -188,8 +188,10 @@ typedef struct { unsigned long pgprot; } pgprot_t;  #define VM_DATA_DEFAULT_FLAGS	(VM_READ | VM_WRITE | VM_EXEC | \  				 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) -#define UNCAC_ADDR(addr)	((addr) - PAGE_OFFSET + UNCAC_BASE) -#define CAC_ADDR(addr)		((addr) - UNCAC_BASE + PAGE_OFFSET) +#define UNCAC_ADDR(addr)	((addr) - PAGE_OFFSET + UNCAC_BASE + 	\ +								PHYS_OFFSET) +#define CAC_ADDR(addr)		((addr) - UNCAC_BASE + PAGE_OFFSET -	\ +								PHYS_OFFSET)  #include <asm-generic/memory_model.h>  #include <asm-generic/getorder.h> diff --git a/arch/mips/include/asm/pgtable-64.h b/arch/mips/include/asm/pgtable-64.h index 26dc69d792a..1be4b0fa30d 100644 --- a/arch/mips/include/asm/pgtable-64.h +++ b/arch/mips/include/asm/pgtable-64.h @@ -120,9 +120,14 @@  #endif  #define FIRST_USER_ADDRESS	0UL -#define VMALLOC_START		MAP_BASE +/* + * TLB refill handlers also map the vmalloc area into xuseg.  Avoid + * the first couple of pages so NULL pointer dereferences will still + * reliably trap. + */ +#define VMALLOC_START		(MAP_BASE + (2 * PAGE_SIZE))  #define VMALLOC_END	\ -	(VMALLOC_START + \ +	(MAP_BASE + \  	 min(PTRS_PER_PGD * PTRS_PER_PMD * PTRS_PER_PTE * PAGE_SIZE, \  	     (1UL << cpu_vmbits)) - (1UL << 32)) diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h index 087a8884ef0..ab387910009 100644 --- a/arch/mips/include/asm/processor.h +++ b/arch/mips/include/asm/processor.h @@ -33,13 +33,19 @@ extern void (*cpu_wait)(void);  extern unsigned int vced_count, vcei_count; +/* + * A special page (the vdso) is mapped into all processes at the very + * top of the virtual memory space. + */ +#define SPECIAL_PAGES_SIZE PAGE_SIZE +  #ifdef CONFIG_32BIT  /*   * User space process size: 2GB. This is hardcoded into a few places,   * so don't change it unless you know what you are doing.   */  #define TASK_SIZE	0x7fff8000UL -#define STACK_TOP	TASK_SIZE +#define STACK_TOP	((TASK_SIZE & PAGE_MASK) - SPECIAL_PAGES_SIZE)  /*   * This decides where the kernel will search for a free chunk of vm @@ -59,7 +65,8 @@ extern unsigned int vced_count, vcei_count;  #define TASK_SIZE32	0x7fff8000UL  #define TASK_SIZE	0x10000000000UL  #define STACK_TOP	\ -      (test_thread_flag(TIF_32BIT_ADDR) ? TASK_SIZE32 : TASK_SIZE) +	(((test_thread_flag(TIF_32BIT_ADDR) ?				\ +	   TASK_SIZE32 : TASK_SIZE) & PAGE_MASK) - SPECIAL_PAGES_SIZE)  /*   * This decides where the kernel will search for a free chunk of vm diff --git a/arch/mips/include/asm/ptrace.h b/arch/mips/include/asm/ptrace.h index ce47118e52b..cdc6a46efd9 100644 --- a/arch/mips/include/asm/ptrace.h +++ b/arch/mips/include/asm/ptrace.h @@ -142,9 +142,9 @@ extern int ptrace_set_watch_regs(struct task_struct *child,  extern asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit); -extern NORET_TYPE void die(const char *, const struct pt_regs *) ATTRIB_NORET; +extern NORET_TYPE void die(const char *, struct pt_regs *) ATTRIB_NORET; -static inline void die_if_kernel(const char *str, const struct pt_regs *regs) +static inline void die_if_kernel(const char *str, struct pt_regs *regs)  {  	if (unlikely(!user_mode(regs)))  		die(str, regs); diff --git a/arch/mips/include/asm/stackframe.h b/arch/mips/include/asm/stackframe.h index 3b6da3330e3..58730c5ce4b 100644 --- a/arch/mips/include/asm/stackframe.h +++ b/arch/mips/include/asm/stackframe.h @@ -121,6 +121,25 @@  		.endm  #else  		.macro	get_saved_sp	/* Uniprocessor variation */ +#ifdef CONFIG_CPU_JUMP_WORKAROUNDS +		/* +		 * Clear BTB (branch target buffer), forbid RAS (return address +		 * stack) to workaround the Out-of-order Issue in Loongson2F +		 * via its diagnostic register. +		 */ +		move	k0, ra +		jal	1f +		 nop +1:		jal	1f +		 nop +1:		jal	1f +		 nop +1:		jal	1f +		 nop +1:		move	ra, k0 +		li	k0, 3 +		mtc0	k0, $22 +#endif /* CONFIG_CPU_LOONGSON2F */  #if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)  		lui	k1, %hi(kernelsp)  #else diff --git a/arch/mips/include/asm/uasm.h b/arch/mips/include/asm/uasm.h index b99bd07e199..697e40c0649 100644 --- a/arch/mips/include/asm/uasm.h +++ b/arch/mips/include/asm/uasm.h @@ -84,6 +84,7 @@ Ip_u2s3u1(_lw);  Ip_u1u2u3(_mfc0);  Ip_u1u2u3(_mtc0);  Ip_u2u1u3(_ori); +Ip_u3u1u2(_or);  Ip_u2s3u1(_pref);  Ip_0(_rfe);  Ip_u2s3u1(_sc); @@ -102,6 +103,7 @@ Ip_0(_tlbwr);  Ip_u3u1u2(_xor);  Ip_u2u1u3(_xori);  Ip_u2u1msbu3(_dins); +Ip_u1(_syscall);  /* Handle labels. */  struct uasm_label { @@ -165,6 +167,24 @@ static inline void __cpuinit uasm_l##lb(struct uasm_label **lab, u32 *addr) \  #define uasm_i_ssnop(buf) uasm_i_sll(buf, 0, 0, 1)  #define uasm_i_ehb(buf) uasm_i_sll(buf, 0, 0, 3) +static inline void uasm_i_dsrl_safe(u32 **p, unsigned int a1, +				    unsigned int a2, unsigned int a3) +{ +	if (a3 < 32) +		uasm_i_dsrl(p, a1, a2, a3); +	else +		uasm_i_dsrl32(p, a1, a2, a3 - 32); +} + +static inline void uasm_i_dsll_safe(u32 **p, unsigned int a1, +				    unsigned int a2, unsigned int a3) +{ +	if (a3 < 32) +		uasm_i_dsll(p, a1, a2, a3); +	else +		uasm_i_dsll32(p, a1, a2, a3 - 32); +} +  /* Handle relocations. */  struct uasm_reloc {  	u32 *addr; diff --git a/arch/mips/include/asm/vdso.h b/arch/mips/include/asm/vdso.h new file mode 100644 index 00000000000..cca56aa40ff --- /dev/null +++ b/arch/mips/include/asm/vdso.h @@ -0,0 +1,29 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License.  See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2009 Cavium Networks + */ + +#ifndef __ASM_VDSO_H +#define __ASM_VDSO_H + +#include <linux/types.h> + + +#ifdef CONFIG_32BIT +struct mips_vdso { +	u32 signal_trampoline[2]; +	u32 rt_signal_trampoline[2]; +}; +#else  /* !CONFIG_32BIT */ +struct mips_vdso { +	u32 o32_signal_trampoline[2]; +	u32 o32_rt_signal_trampoline[2]; +	u32 rt_signal_trampoline[2]; +	u32 n32_rt_signal_trampoline[2]; +}; +#endif /* CONFIG_32BIT */ + +#endif /* __ASM_VDSO_H */  |