diff options
Diffstat (limited to 'arch/mips/include/asm')
34 files changed, 495 insertions, 65 deletions
diff --git a/arch/mips/include/asm/amon.h b/arch/mips/include/asm/amon.h new file mode 100644 index 00000000000..c3dc1a68dd8 --- /dev/null +++ b/arch/mips/include/asm/amon.h @@ -0,0 +1,7 @@ +/* + * Amon support + */ + +int amon_cpu_avail(int); +void amon_cpu_start(int, unsigned long, unsigned long, +		    unsigned long, unsigned long); diff --git a/arch/mips/include/asm/ds1287.h b/arch/mips/include/asm/ds1287.h index ba1702e8693..3af0b8fb3b8 100644 --- a/arch/mips/include/asm/ds1287.h +++ b/arch/mips/include/asm/ds1287.h @@ -1,7 +1,7 @@  /*   *  DS1287 timer functions.   * - *  Copyright (C) 2008  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2008  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h index d58f128aa74..7990694cda2 100644 --- a/arch/mips/include/asm/elf.h +++ b/arch/mips/include/asm/elf.h @@ -316,9 +316,13 @@ extern void elf_dump_regs(elf_greg_t *, struct pt_regs *regs);  extern int dump_task_regs(struct task_struct *, elf_gregset_t *);  extern int dump_task_fpu(struct task_struct *, elf_fpregset_t *); +#ifndef ELF_CORE_COPY_REGS  #define ELF_CORE_COPY_REGS(elf_regs, regs)			\  	elf_dump_regs((elf_greg_t *)&(elf_regs), regs); +#endif +#ifndef ELF_CORE_COPY_TASK_REGS  #define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk, elf_regs) +#endif  #define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs)			\  	dump_task_fpu(tsk, elf_fpregs) diff --git a/arch/mips/include/asm/emma/emma2rh.h b/arch/mips/include/asm/emma/emma2rh.h index 30aea91de62..2afb2fe11b3 100644 --- a/arch/mips/include/asm/emma/emma2rh.h +++ b/arch/mips/include/asm/emma/emma2rh.h @@ -1,7 +1,4 @@  /* - *  arch/mips/include/asm/emma/emma2rh.h - *      This file is EMMA2RH common header. - *   *  Copyright (C) NEC Electronics Corporation 2005-2006   *   *  This file based on include/asm-mips/ddb5xxx/ddb5xxx.h diff --git a/arch/mips/include/asm/emma/markeins.h b/arch/mips/include/asm/emma/markeins.h index 973b0628490..2618bf23024 100644 --- a/arch/mips/include/asm/emma/markeins.h +++ b/arch/mips/include/asm/emma/markeins.h @@ -1,7 +1,4 @@  /* - *  include/asm-mips/emma2rh/markeins.h - *      This file is EMMA2RH board depended header. - *   *  Copyright (C) NEC Electronics Corporation 2005-2006   *   *  This file based on include/asm-mips/ddb5xxx/ddb5xxx.h diff --git a/arch/mips/include/asm/gcmpregs.h b/arch/mips/include/asm/gcmpregs.h index d74a8a4ca86..36fd969d64d 100644 --- a/arch/mips/include/asm/gcmpregs.h +++ b/arch/mips/include/asm/gcmpregs.h @@ -114,4 +114,6 @@  #define GCMP_CCB_DINTGROUP_OFS		0x0030		/* DINT Group Participate */  #define GCMP_CCB_DBGGROUP_OFS		0x0100		/* DebugBreak Group */ +extern int __init gcmp_probe(unsigned long, unsigned long); +  #endif /* _ASM_GCMPREGS_H */ diff --git a/arch/mips/include/asm/gic.h b/arch/mips/include/asm/gic.h index 954807d9d66..a8f57341f12 100644 --- a/arch/mips/include/asm/gic.h +++ b/arch/mips/include/asm/gic.h @@ -20,7 +20,11 @@  #define GIC_TRIG_EDGE			1  #define GIC_TRIG_LEVEL			0 +#ifdef CONFIG_SMP +#define GIC_NUM_INTRS			(24 + NR_CPUS * 2) +#else  #define GIC_NUM_INTRS			32 +#endif  #define MSK(n) ((1 << (n)) - 1)  #define REG32(addr)		(*(volatile unsigned int *) (addr)) @@ -483,5 +487,7 @@ extern void gic_init(unsigned long gic_base_addr,  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);  #endif /* _ASM_GICREGS_H */ diff --git a/arch/mips/include/asm/irq_gt641xx.h b/arch/mips/include/asm/irq_gt641xx.h index f9a7c3ac2e6..250a2407b59 100644 --- a/arch/mips/include/asm/irq_gt641xx.h +++ b/arch/mips/include/asm/irq_gt641xx.h @@ -1,7 +1,7 @@  /*   *  Galileo/Marvell GT641xx IRQ definitions.   * - *  Copyright (C) 2007  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2007  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by diff --git a/arch/mips/include/asm/mach-ar7/ar7.h b/arch/mips/include/asm/mach-ar7/ar7.h new file mode 100644 index 00000000000..de71694614d --- /dev/null +++ b/arch/mips/include/asm/mach-ar7/ar7.h @@ -0,0 +1,178 @@ +/* + * Copyright (C) 2006,2007 Felix Fietkau <nbd@openwrt.org> + * Copyright (C) 2006,2007 Eugene Konev <ejka@openwrt.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA + */ + +#ifndef __AR7_H__ +#define __AR7_H__ + +#include <linux/delay.h> +#include <linux/io.h> +#include <linux/errno.h> + +#include <asm/addrspace.h> + +#define AR7_SDRAM_BASE	0x14000000 + +#define AR7_REGS_BASE	0x08610000 + +#define AR7_REGS_MAC0	(AR7_REGS_BASE + 0x0000) +#define AR7_REGS_GPIO	(AR7_REGS_BASE + 0x0900) +/* 0x08610A00 - 0x08610BFF (512 bytes, 128 bytes / clock) */ +#define AR7_REGS_POWER	(AR7_REGS_BASE + 0x0a00) +#define AR7_REGS_CLOCKS (AR7_REGS_POWER + 0x80) +#define UR8_REGS_CLOCKS (AR7_REGS_POWER + 0x20) +#define AR7_REGS_UART0	(AR7_REGS_BASE + 0x0e00) +#define AR7_REGS_USB	(AR7_REGS_BASE + 0x1200) +#define AR7_REGS_RESET	(AR7_REGS_BASE + 0x1600) +#define AR7_REGS_VLYNQ0	(AR7_REGS_BASE + 0x1800) +#define AR7_REGS_DCL	(AR7_REGS_BASE + 0x1a00) +#define AR7_REGS_VLYNQ1	(AR7_REGS_BASE + 0x1c00) +#define AR7_REGS_MDIO	(AR7_REGS_BASE + 0x1e00) +#define AR7_REGS_IRQ	(AR7_REGS_BASE + 0x2400) +#define AR7_REGS_MAC1	(AR7_REGS_BASE + 0x2800) + +#define AR7_REGS_WDT	(AR7_REGS_BASE + 0x1f00) +#define UR8_REGS_WDT	(AR7_REGS_BASE + 0x0b00) +#define UR8_REGS_UART1	(AR7_REGS_BASE + 0x0f00) + +#define AR7_RESET_PEREPHERIAL	0x0 +#define AR7_RESET_SOFTWARE	0x4 +#define AR7_RESET_STATUS	0x8 + +#define AR7_RESET_BIT_CPMAC_LO	17 +#define AR7_RESET_BIT_CPMAC_HI	21 +#define AR7_RESET_BIT_MDIO	22 +#define AR7_RESET_BIT_EPHY	26 + +/* GPIO control registers */ +#define AR7_GPIO_INPUT	0x0 +#define AR7_GPIO_OUTPUT	0x4 +#define AR7_GPIO_DIR	0x8 +#define AR7_GPIO_ENABLE	0xc + +#define AR7_CHIP_7100	0x18 +#define AR7_CHIP_7200	0x2b +#define AR7_CHIP_7300	0x05 + +/* Interrupts */ +#define AR7_IRQ_UART0	15 +#define AR7_IRQ_UART1	16 + +/* Clocks */ +#define AR7_AFE_CLOCK	35328000 +#define AR7_REF_CLOCK	25000000 +#define AR7_XTAL_CLOCK	24000000 + +struct plat_cpmac_data { +	int reset_bit; +	int power_bit; +	u32 phy_mask; +	char dev_addr[6]; +}; + +struct plat_dsl_data { +	int reset_bit_dsl; +	int reset_bit_sar; +}; + +extern int ar7_cpu_clock, ar7_bus_clock, ar7_dsp_clock; + +static inline u16 ar7_chip_id(void) +{ +	return readl((void *)KSEG1ADDR(AR7_REGS_GPIO + 0x14)) & 0xffff; +} + +static inline u8 ar7_chip_rev(void) +{ +	return (readl((void *)KSEG1ADDR(AR7_REGS_GPIO + 0x14)) >> 16) & 0xff; +} + +static inline int ar7_cpu_freq(void) +{ +	return ar7_cpu_clock; +} + +static inline int ar7_bus_freq(void) +{ +	return ar7_bus_clock; +} + +static inline int ar7_vbus_freq(void) +{ +	return ar7_bus_clock / 2; +} +#define ar7_cpmac_freq ar7_vbus_freq + +static inline int ar7_dsp_freq(void) +{ +	return ar7_dsp_clock; +} + +static inline int ar7_has_high_cpmac(void) +{ +	u16 chip_id = ar7_chip_id(); +	switch (chip_id) { +	case AR7_CHIP_7100: +	case AR7_CHIP_7200: +		return 0; +	case AR7_CHIP_7300: +		return 1; +	default: +		return -ENXIO; +	} +} +#define ar7_has_high_vlynq ar7_has_high_cpmac +#define ar7_has_second_uart ar7_has_high_cpmac + +static inline void ar7_device_enable(u32 bit) +{ +	void *reset_reg = +		(void *)KSEG1ADDR(AR7_REGS_RESET + AR7_RESET_PEREPHERIAL); +	writel(readl(reset_reg) | (1 << bit), reset_reg); +	msleep(20); +} + +static inline void ar7_device_disable(u32 bit) +{ +	void *reset_reg = +		(void *)KSEG1ADDR(AR7_REGS_RESET + AR7_RESET_PEREPHERIAL); +	writel(readl(reset_reg) & ~(1 << bit), reset_reg); +	msleep(20); +} + +static inline void ar7_device_reset(u32 bit) +{ +	ar7_device_disable(bit); +	ar7_device_enable(bit); +} + +static inline void ar7_device_on(u32 bit) +{ +	void *power_reg = (void *)KSEG1ADDR(AR7_REGS_POWER); +	writel(readl(power_reg) | (1 << bit), power_reg); +	msleep(20); +} + +static inline void ar7_device_off(u32 bit) +{ +	void *power_reg = (void *)KSEG1ADDR(AR7_REGS_POWER); +	writel(readl(power_reg) & ~(1 << bit), power_reg); +	msleep(20); +} + +#endif /* __AR7_H__ */ diff --git a/arch/mips/include/asm/mach-ar7/gpio.h b/arch/mips/include/asm/mach-ar7/gpio.h new file mode 100644 index 00000000000..cbe9c4f126d --- /dev/null +++ b/arch/mips/include/asm/mach-ar7/gpio.h @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2007 Florian Fainelli <florian@openwrt.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA + */ + +#ifndef __AR7_GPIO_H__ +#define __AR7_GPIO_H__ + +#include <asm/mach-ar7/ar7.h> + +#define AR7_GPIO_MAX 32 + +extern int gpio_request(unsigned gpio, const char *label); +extern void gpio_free(unsigned gpio); + +/* Common GPIO layer */ +static inline int gpio_get_value(unsigned gpio) +{ +	void __iomem *gpio_in = +		(void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_INPUT); + +	return readl(gpio_in) & (1 << gpio); +} + +static inline void gpio_set_value(unsigned gpio, int value) +{ +	void __iomem *gpio_out = +		(void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_OUTPUT); +	unsigned tmp; + +	tmp = readl(gpio_out) & ~(1 << gpio); +	if (value) +		tmp |= 1 << gpio; +	writel(tmp, gpio_out); +} + +static inline int gpio_direction_input(unsigned gpio) +{ +	void __iomem *gpio_dir = +		(void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_DIR); + +	if (gpio >= AR7_GPIO_MAX) +		return -EINVAL; + +	writel(readl(gpio_dir) | (1 << gpio), gpio_dir); + +	return 0; +} + +static inline int gpio_direction_output(unsigned gpio, int value) +{ +	void __iomem *gpio_dir = +		(void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_DIR); + +	if (gpio >= AR7_GPIO_MAX) +		return -EINVAL; + +	gpio_set_value(gpio, value); +	writel(readl(gpio_dir) & ~(1 << gpio), gpio_dir); + +	return 0; +} + +static inline int gpio_to_irq(unsigned gpio) +{ +	return -EINVAL; +} + +static inline int irq_to_gpio(unsigned irq) +{ +	return -EINVAL; +} + +/* Board specific GPIO functions */ +static inline int ar7_gpio_enable(unsigned gpio) +{ +	void __iomem *gpio_en = +		(void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_ENABLE); + +	writel(readl(gpio_en) | (1 << gpio), gpio_en); + +	return 0; +} + +static inline int ar7_gpio_disable(unsigned gpio) +{ +	void __iomem *gpio_en = +		(void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_ENABLE); + +	writel(readl(gpio_en) & ~(1 << gpio), gpio_en); + +	return 0; +} + +#include <asm-generic/gpio.h> + +#endif diff --git a/arch/mips/include/asm/mach-ar7/irq.h b/arch/mips/include/asm/mach-ar7/irq.h new file mode 100644 index 00000000000..39e9757e3d9 --- /dev/null +++ b/arch/mips/include/asm/mach-ar7/irq.h @@ -0,0 +1,16 @@ +/* + * 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. + * + * Shamelessly copied from asm-mips/mach-emma2rh/ + * Copyright (C) 2003 by Ralf Baechle + */ +#ifndef __ASM_AR7_IRQ_H +#define __ASM_AR7_IRQ_H + +#define NR_IRQS	256 + +#include_next <irq.h> + +#endif /* __ASM_AR7_IRQ_H */ diff --git a/arch/mips/include/asm/mach-ar7/prom.h b/arch/mips/include/asm/mach-ar7/prom.h new file mode 100644 index 00000000000..088f61fe85e --- /dev/null +++ b/arch/mips/include/asm/mach-ar7/prom.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2006, 2007 Florian Fainelli <florian@openwrt.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA + */ + +#ifndef __PROM_H__ +#define __PROM_H__ + +extern char *prom_getenv(const char *name); +extern void prom_meminit(void); + +#endif /* __PROM_H__ */ diff --git a/arch/mips/include/asm/mach-ar7/spaces.h b/arch/mips/include/asm/mach-ar7/spaces.h new file mode 100644 index 00000000000..ac28f273449 --- /dev/null +++ b/arch/mips/include/asm/mach-ar7/spaces.h @@ -0,0 +1,22 @@ +/* + * 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) 1994 - 1999, 2000, 03, 04 Ralf Baechle + * Copyright (C) 2000, 2002  Maciej W. Rozycki + * Copyright (C) 1990, 1999, 2000 Silicon Graphics, Inc. + */ +#ifndef _ASM_AR7_SPACES_H +#define _ASM_AR7_SPACES_H + +/* + * This handles the memory map. + * We handle pages at KSEG0 for kernels with 32 bit address space. + */ +#define PAGE_OFFSET		0x94000000UL +#define PHYS_OFFSET		0x14000000UL + +#include <asm/mach-generic/spaces.h> + +#endif /* __ASM_AR7_SPACES_H */ diff --git a/arch/mips/include/asm/mach-ar7/war.h b/arch/mips/include/asm/mach-ar7/war.h new file mode 100644 index 00000000000..f4862b56308 --- /dev/null +++ b/arch/mips/include/asm/mach-ar7/war.h @@ -0,0 +1,25 @@ +/* + * 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) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org> + */ +#ifndef __ASM_MIPS_MACH_AR7_WAR_H +#define __ASM_MIPS_MACH_AR7_WAR_H + +#define R4600_V1_INDEX_ICACHEOP_WAR	0 +#define R4600_V1_HIT_CACHEOP_WAR	0 +#define R4600_V2_HIT_CACHEOP_WAR	0 +#define R5432_CP0_INTERRUPT_WAR		0 +#define BCM1250_M3_WAR			0 +#define SIBYTE_1956_WAR			0 +#define MIPS4K_ICACHE_REFILL_WAR	0 +#define MIPS_CACHE_SYNC_WAR		0 +#define TX49XX_ICACHE_INDEX_INV_WAR	0 +#define RM9000_CDEX_SMP_WAR		0 +#define ICACHE_REFILLS_WORKAROUND_WAR	0 +#define R10000_LLSC_WAR			0 +#define MIPS34K_MISSED_ITLB_WAR		0 + +#endif /* __ASM_MIPS_MACH_AR7_WAR_H */ diff --git a/arch/mips/include/asm/mach-cobalt/irq.h b/arch/mips/include/asm/mach-cobalt/irq.h index 57c8c9ac585..9da9acf5dcb 100644 --- a/arch/mips/include/asm/mach-cobalt/irq.h +++ b/arch/mips/include/asm/mach-cobalt/irq.h @@ -8,7 +8,7 @@   * Copyright (C) 1997 Cobalt Microserver   * Copyright (C) 1997, 2003 Ralf Baechle   * Copyright (C) 2001-2003 Liam Davies (ldavies@agile.tv) - * Copyright (C) 2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + * Copyright (C) 2007 Yoichi Yuasa <yuasa@linux-mips.org>   */  #ifndef _ASM_COBALT_IRQ_H  #define _ASM_COBALT_IRQ_H diff --git a/arch/mips/include/asm/mach-cobalt/mach-gt64120.h b/arch/mips/include/asm/mach-cobalt/mach-gt64120.h index ae9c5523c7e..f8afec3f294 100644 --- a/arch/mips/include/asm/mach-cobalt/mach-gt64120.h +++ b/arch/mips/include/asm/mach-cobalt/mach-gt64120.h @@ -1,5 +1,5 @@  /* - *  Copyright (C) 2006  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2006  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by diff --git a/arch/mips/include/asm/octeon/pci-octeon.h b/arch/mips/include/asm/octeon/pci-octeon.h new file mode 100644 index 00000000000..6ac5d3e3398 --- /dev/null +++ b/arch/mips/include/asm/octeon/pci-octeon.h @@ -0,0 +1,45 @@ +/* + * 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) 2005-2009 Cavium Networks + */ + +#ifndef __PCI_OCTEON_H__ +#define __PCI_OCTEON_H__ + +#include <linux/pci.h> + +/* Some PCI cards require delays when accessing config space. */ +#define PCI_CONFIG_SPACE_DELAY 10000 + +/* + * pcibios_map_irq() is defined inside pci-octeon.c. All it does is + * call the Octeon specific version pointed to by this variable. This + * function needs to change for PCI or PCIe based hosts. + */ +extern int (*octeon_pcibios_map_irq)(const struct pci_dev *dev, +				     u8 slot, u8 pin); + +/* + * The following defines are used when octeon_dma_bar_type = + * OCTEON_DMA_BAR_TYPE_BIG + */ +#define OCTEON_PCI_BAR1_HOLE_BITS 5 +#define OCTEON_PCI_BAR1_HOLE_SIZE (1ul<<(OCTEON_PCI_BAR1_HOLE_BITS+3)) + +enum octeon_dma_bar_type { +	OCTEON_DMA_BAR_TYPE_INVALID, +	OCTEON_DMA_BAR_TYPE_SMALL, +	OCTEON_DMA_BAR_TYPE_BIG, +	OCTEON_DMA_BAR_TYPE_PCIE +}; + +/* + * This tells the DMA mapping system in dma-octeon.c how to map PCI + * DMA addresses. + */ +extern enum octeon_dma_bar_type octeon_dma_bar_type; + +#endif diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h index dc0eaa73128..4320239cf4e 100644 --- a/arch/mips/include/asm/page.h +++ b/arch/mips/include/asm/page.h @@ -32,10 +32,12 @@  #define PAGE_SIZE	(1UL << PAGE_SHIFT)  #define PAGE_MASK       (~((1 << PAGE_SHIFT) - 1)) +#ifdef CONFIG_HUGETLB_PAGE  #define HPAGE_SHIFT	(PAGE_SHIFT + PAGE_SHIFT - 3)  #define HPAGE_SIZE	((1UL) << HPAGE_SHIFT)  #define HPAGE_MASK	(~(HPAGE_SIZE - 1))  #define HUGETLB_PAGE_ORDER	(HPAGE_SHIFT - PAGE_SHIFT) +#endif /* CONFIG_HUGETLB_PAGE */  #ifndef __ASSEMBLY__ @@ -165,7 +167,14 @@ typedef struct { unsigned long pgprot; } pgprot_t;  #ifdef CONFIG_FLATMEM -#define pfn_valid(pfn)		((pfn) >= ARCH_PFN_OFFSET && (pfn) < max_mapnr) +#define pfn_valid(pfn)							\ +({									\ +	unsigned long __pfn = (pfn);					\ +	/* avoid <linux/bootmem.h> include hell */			\ +	extern unsigned long min_low_pfn;				\ +									\ +	__pfn >= min_low_pfn && __pfn < max_mapnr;			\ +})  #elif defined(CONFIG_SPARSEMEM) diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h index 1275831dda2..3738f4b48cb 100644 --- a/arch/mips/include/asm/pgalloc.h +++ b/arch/mips/include/asm/pgalloc.h @@ -98,23 +98,12 @@ static inline void pte_free(struct mm_struct *mm, pgtable_t pte)  	__free_pages(pte, PTE_ORDER);  } -#define __pte_free_tlb(tlb,pte)				\ +#define __pte_free_tlb(tlb,pte,address)			\  do {							\  	pgtable_page_dtor(pte);				\  	tlb_remove_page((tlb), pte);			\  } while (0) -#ifdef CONFIG_32BIT - -/* - * allocating and freeing a pmd is trivial: the 1-entry pmd is - * inside the pgd, so has no extra memory associated with it. - */ -#define pmd_free(mm, x)			do { } while (0) -#define __pmd_free_tlb(tlb, x)		do { } while (0) - -#endif -  #ifdef CONFIG_64BIT  static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) @@ -132,7 +121,7 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)  	free_pages((unsigned long)pmd, PMD_ORDER);  } -#define __pmd_free_tlb(tlb, x)	pmd_free((tlb)->mm, x) +#define __pmd_free_tlb(tlb, x, addr)	pmd_free((tlb)->mm, x)  #endif diff --git a/arch/mips/include/asm/pmc-sierra/msp71xx/war.h b/arch/mips/include/asm/pmc-sierra/msp71xx/war.h index 0bf48fc1892..9e2ee429c52 100644 --- a/arch/mips/include/asm/pmc-sierra/msp71xx/war.h +++ b/arch/mips/include/asm/pmc-sierra/msp71xx/war.h @@ -23,6 +23,8 @@  #if defined(CONFIG_PMC_MSP7120_EVAL) || defined(CONFIG_PMC_MSP7120_GW) || \  	defined(CONFIG_PMC_MSP7120_FPGA)  #define MIPS34K_MISSED_ITLB_WAR         1 +#else +#define MIPS34K_MISSED_ITLB_WAR         0  #endif  #endif /* __ASM_MIPS_PMC_SIERRA_WAR_H */ diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h index 0f926aa0cb4..087a8884ef0 100644 --- a/arch/mips/include/asm/processor.h +++ b/arch/mips/include/asm/processor.h @@ -311,8 +311,9 @@ extern void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long  unsigned long get_wchan(struct task_struct *p); -#define __KSTK_TOS(tsk) ((unsigned long)task_stack_page(tsk) + THREAD_SIZE - 32) -#define task_pt_regs(tsk) ((struct pt_regs *)__KSTK_TOS(tsk) - 1) +#define __KSTK_TOS(tsk) ((unsigned long)task_stack_page(tsk) + \ +			 THREAD_SIZE - 32 - sizeof(struct pt_regs)) +#define task_pt_regs(tsk) ((struct pt_regs *)__KSTK_TOS(tsk))  #define KSTK_EIP(tsk) (task_pt_regs(tsk)->cp0_epc)  #define KSTK_ESP(tsk) (task_pt_regs(tsk)->regs[29])  #define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status) diff --git a/arch/mips/include/asm/reg.h b/arch/mips/include/asm/reg.h index 634b55d7e7f..910e71a1246 100644 --- a/arch/mips/include/asm/reg.h +++ b/arch/mips/include/asm/reg.h @@ -69,7 +69,7 @@  #endif -#ifdef CONFIG_64BIT +#if defined(CONFIG_64BIT) && !defined(WANT_COMPAT_REG_H)  #define EF_R0			 0  #define EF_R1			 1 diff --git a/arch/mips/include/asm/swab.h b/arch/mips/include/asm/swab.h index 99993c0d6c1..97c2f81b4b4 100644 --- a/arch/mips/include/asm/swab.h +++ b/arch/mips/include/asm/swab.h @@ -38,7 +38,11 @@ static inline __attribute_const__ __u32 __arch_swab32(__u32 x)  }  #define __arch_swab32 __arch_swab32 -#ifdef CONFIG_CPU_MIPS64_R2 +/* + * Having already checked for CONFIG_CPU_MIPSR2, enable the + * optimized version for 64-bit kernel on r2 CPUs. + */ +#ifdef CONFIG_64BIT  static inline __attribute_const__ __u64 __arch_swab64(__u64 x)  {  	__asm__( @@ -50,6 +54,6 @@ static inline __attribute_const__ __u64 __arch_swab64(__u64 x)  	return x;  }  #define __arch_swab64 __arch_swab64 -#endif /* CONFIG_CPU_MIPS64_R2 */ +#endif /* CONFIG_64BIT */  #endif /* CONFIG_CPU_MIPSR2 */  #endif /* _ASM_SWAB_H */ diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h index 143a48136a4..f9df720d2e4 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h @@ -39,8 +39,6 @@ struct thread_info {  /*   * macros/functions for gaining access to the thread information structure - * - * preempt_count needs to be 1 initially, until the scheduler is functional.   */  #define INIT_THREAD_INFO(tsk)			\  {						\ @@ -48,7 +46,7 @@ struct thread_info {  	.exec_domain	= &default_exec_domain,	\  	.flags		= _TIF_FIXADE,		\  	.cpu		= 0,			\ -	.preempt_count	= 1,			\ +	.preempt_count	= INIT_PREEMPT_COUNT,	\  	.addr_limit	= KERNEL_DS,		\  	.restart_block	= {			\  		.fn = do_no_restart_syscall,	\ diff --git a/arch/mips/include/asm/unistd.h b/arch/mips/include/asm/unistd.h index 40005010827..e753a777949 100644 --- a/arch/mips/include/asm/unistd.h +++ b/arch/mips/include/asm/unistd.h @@ -352,16 +352,19 @@  #define __NR_inotify_init1		(__NR_Linux + 329)  #define __NR_preadv			(__NR_Linux + 330)  #define __NR_pwritev			(__NR_Linux + 331) +#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 332) +#define __NR_perf_counter_open		(__NR_Linux + 333) +#define __NR_accept4			(__NR_Linux + 334)  /*   * Offset of the last Linux o32 flavoured syscall   */ -#define __NR_Linux_syscalls		331 +#define __NR_Linux_syscalls		334  #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */  #define __NR_O32_Linux			4000 -#define __NR_O32_Linux_syscalls		331 +#define __NR_O32_Linux_syscalls		334  #if _MIPS_SIM == _MIPS_SIM_ABI64 @@ -660,16 +663,19 @@  #define __NR_inotify_init1		(__NR_Linux + 288)  #define __NR_preadv			(__NR_Linux + 289)  #define __NR_pwritev			(__NR_Linux + 290) +#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 291) +#define __NR_perf_counter_open		(__NR_Linux + 292) +#define __NR_accept4			(__NR_Linux + 293)  /*   * Offset of the last Linux 64-bit flavoured syscall   */ -#define __NR_Linux_syscalls		290 +#define __NR_Linux_syscalls		293  #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */  #define __NR_64_Linux			5000 -#define __NR_64_Linux_syscalls		290 +#define __NR_64_Linux_syscalls		293  #if _MIPS_SIM == _MIPS_SIM_NABI32 @@ -972,16 +978,19 @@  #define __NR_inotify_init1		(__NR_Linux + 292)  #define __NR_preadv			(__NR_Linux + 293)  #define __NR_pwritev			(__NR_Linux + 294) +#define __NR_rt_tgsigqueueinfo		(__NR_Linux + 295) +#define __NR_perf_counter_open		(__NR_Linux + 296) +#define __NR_accept4			(__NR_Linux + 297)  /*   * Offset of the last N32 flavoured syscall   */ -#define __NR_Linux_syscalls		294 +#define __NR_Linux_syscalls		297  #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */  #define __NR_N32_Linux			6000 -#define __NR_N32_Linux_syscalls		294 +#define __NR_N32_Linux_syscalls		297  #ifdef __KERNEL__ diff --git a/arch/mips/include/asm/vr41xx/capcella.h b/arch/mips/include/asm/vr41xx/capcella.h index e0ee05a3dfc..fcc6569414f 100644 --- a/arch/mips/include/asm/vr41xx/capcella.h +++ b/arch/mips/include/asm/vr41xx/capcella.h @@ -1,7 +1,7 @@  /*   *  capcella.h, Include file for ZAO Networks Capcella.   * - *  Copyright (C) 2002-2004  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2002-2004  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by diff --git a/arch/mips/include/asm/vr41xx/giu.h b/arch/mips/include/asm/vr41xx/giu.h index 0bcdd3a5c25..6a90bc1d916 100644 --- a/arch/mips/include/asm/vr41xx/giu.h +++ b/arch/mips/include/asm/vr41xx/giu.h @@ -1,7 +1,7 @@  /*   *  Include file for NEC VR4100 series General-purpose I/O Unit.   * - *  Copyright (C) 2005  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2005-2009  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by @@ -41,7 +41,8 @@ typedef enum {  	IRQ_SIGNAL_HOLD,  } irq_signal_t; -extern void vr41xx_set_irq_trigger(unsigned int pin, irq_trigger_t trigger, irq_signal_t signal); +extern void vr41xx_set_irq_trigger(unsigned int pin, irq_trigger_t trigger, +				   irq_signal_t signal);  typedef enum {  	IRQ_LEVEL_LOW, @@ -51,23 +52,6 @@ typedef enum {  extern void vr41xx_set_irq_level(unsigned int pin, irq_level_t level);  typedef enum { -	GPIO_DATA_LOW, -	GPIO_DATA_HIGH, -	GPIO_DATA_INVAL, -} gpio_data_t; - -extern gpio_data_t vr41xx_gpio_get_pin(unsigned int pin); -extern int vr41xx_gpio_set_pin(unsigned int pin, gpio_data_t data); - -typedef enum { -	GPIO_INPUT, -	GPIO_OUTPUT, -	GPIO_OUTPUT_DISABLE, -} gpio_direction_t; - -extern int vr41xx_gpio_set_direction(unsigned int pin, gpio_direction_t dir); - -typedef enum {  	GPIO_PULL_DOWN,  	GPIO_PULL_UP,  	GPIO_PULL_DISABLE, diff --git a/arch/mips/include/asm/vr41xx/irq.h b/arch/mips/include/asm/vr41xx/irq.h index d315dfbc08f..b07f7321751 100644 --- a/arch/mips/include/asm/vr41xx/irq.h +++ b/arch/mips/include/asm/vr41xx/irq.h @@ -7,7 +7,7 @@   * Copyright (C) 2001, 2002 Paul Mundt   * Copyright (C) 2002 MontaVista Software, Inc.   * Copyright (C) 2002 TimeSys Corp. - * Copyright (C) 2003-2006 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + * Copyright (C) 2003-2006 Yoichi Yuasa <yuasa@linux-mips.org>   *   * This program is free software; you can redistribute it and/or modify it   * under the terms of the GNU General Public License as published by the diff --git a/arch/mips/include/asm/vr41xx/mpc30x.h b/arch/mips/include/asm/vr41xx/mpc30x.h index 1d67df843dc..130d09d8c8c 100644 --- a/arch/mips/include/asm/vr41xx/mpc30x.h +++ b/arch/mips/include/asm/vr41xx/mpc30x.h @@ -1,7 +1,7 @@  /*   *  mpc30x.h, Include file for Victor MP-C303/304.   * - *  Copyright (C) 2002-2004  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2002-2004  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by diff --git a/arch/mips/include/asm/vr41xx/pci.h b/arch/mips/include/asm/vr41xx/pci.h index 6fc01ce1977..c231a3d6cfd 100644 --- a/arch/mips/include/asm/vr41xx/pci.h +++ b/arch/mips/include/asm/vr41xx/pci.h @@ -1,7 +1,7 @@  /*   *  Include file for NEC VR4100 series PCI Control Unit.   * - *  Copyright (C) 2004-2005  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2004-2005  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by diff --git a/arch/mips/include/asm/vr41xx/siu.h b/arch/mips/include/asm/vr41xx/siu.h index da9f6e37340..ca806bc4ddc 100644 --- a/arch/mips/include/asm/vr41xx/siu.h +++ b/arch/mips/include/asm/vr41xx/siu.h @@ -1,7 +1,7 @@  /*   *  Include file for NEC VR4100 series Serial Interface Unit.   * - *  Copyright (C) 2005-2008  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2005-2008  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by diff --git a/arch/mips/include/asm/vr41xx/tb0219.h b/arch/mips/include/asm/vr41xx/tb0219.h index dc981b4be0a..c78e8243b44 100644 --- a/arch/mips/include/asm/vr41xx/tb0219.h +++ b/arch/mips/include/asm/vr41xx/tb0219.h @@ -1,7 +1,7 @@  /*   *  tb0219.h, Include file for TANBAC TB0219.   * - *  Copyright (C) 2002-2004  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2002-2004  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  Modified for TANBAC TB0219:   *  Copyright (C) 2003 Megasolution Inc.  <matsu@megasolution.jp> diff --git a/arch/mips/include/asm/vr41xx/tb0226.h b/arch/mips/include/asm/vr41xx/tb0226.h index de527dcfa5f..36f5f798e41 100644 --- a/arch/mips/include/asm/vr41xx/tb0226.h +++ b/arch/mips/include/asm/vr41xx/tb0226.h @@ -1,7 +1,7 @@  /*   *  tb0226.h, Include file for TANBAC TB0226.   * - *  Copyright (C) 2002-2004  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + *  Copyright (C) 2002-2004  Yoichi Yuasa <yuasa@linux-mips.org>   *   *  This program is free software; you can redistribute it and/or modify   *  it under the terms of the GNU General Public License as published by diff --git a/arch/mips/include/asm/vr41xx/vr41xx.h b/arch/mips/include/asm/vr41xx/vr41xx.h index 22be64971cc..7b96a43b72b 100644 --- a/arch/mips/include/asm/vr41xx/vr41xx.h +++ b/arch/mips/include/asm/vr41xx/vr41xx.h @@ -7,7 +7,7 @@   * Copyright (C) 2001, 2002 Paul Mundt   * Copyright (C) 2002 MontaVista Software, Inc.   * Copyright (C) 2002 TimeSys Corp. - * Copyright (C) 2003-2008 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> + * Copyright (C) 2003-2008 Yoichi Yuasa <yuasa@linux-mips.org>   *   * This program is free software; you can redistribute it and/or modify it   * under the terms of the GNU General Public License as published by the  |