Merge branch 'ralf-3.7' of git://git.linux-mips.org/pub/scm/sjhill/linux-sjhill into mips-for-linux-next
This commit is contained in:
@@ -94,6 +94,7 @@
|
||||
#define PRID_IMP_24KE 0x9600
|
||||
#define PRID_IMP_74K 0x9700
|
||||
#define PRID_IMP_1004K 0x9900
|
||||
#define PRID_IMP_1074K 0x9a00
|
||||
#define PRID_IMP_M14KC 0x9c00
|
||||
|
||||
/*
|
||||
|
@@ -33,13 +33,13 @@
|
||||
REG32(_gic_base + segment##_##SECTION_OFS + offset)
|
||||
|
||||
#define GIC_ABS_REG(segment, offset) \
|
||||
(_gic_base + segment##_##SECTION_OFS + offset##_##OFS)
|
||||
(_gic_base + segment##_##SECTION_OFS + offset##_##OFS)
|
||||
#define GIC_REG_ABS_ADDR(segment, offset) \
|
||||
(_gic_base + segment##_##SECTION_OFS + offset)
|
||||
(_gic_base + segment##_##SECTION_OFS + offset)
|
||||
|
||||
#ifdef GICISBYTELITTLEENDIAN
|
||||
#define GICREAD(reg, data) (data) = (reg), (data) = le32_to_cpu(data)
|
||||
#define GICWRITE(reg, data) (reg) = cpu_to_le32(data)
|
||||
#define GICREAD(reg, data) ((data) = (reg), (data) = le32_to_cpu(data))
|
||||
#define GICWRITE(reg, data) ((reg) = cpu_to_le32(data))
|
||||
#define GICBIS(reg, bits) \
|
||||
({unsigned int data; \
|
||||
GICREAD(reg, data); \
|
||||
@@ -48,9 +48,9 @@
|
||||
})
|
||||
|
||||
#else
|
||||
#define GICREAD(reg, data) (data) = (reg)
|
||||
#define GICWRITE(reg, data) (reg) = (data)
|
||||
#define GICBIS(reg, bits) (reg) |= (bits)
|
||||
#define GICREAD(reg, data) ((data) = (reg))
|
||||
#define GICWRITE(reg, data) ((reg) = (data))
|
||||
#define GICBIS(reg, bits) ((reg) |= (bits))
|
||||
#endif
|
||||
|
||||
|
||||
@@ -304,15 +304,15 @@
|
||||
GIC_SH_MAP_TO_VPE_REG_BIT(vpe))
|
||||
|
||||
struct gic_pcpu_mask {
|
||||
DECLARE_BITMAP(pcpu_mask, GIC_NUM_INTRS);
|
||||
DECLARE_BITMAP(pcpu_mask, GIC_NUM_INTRS);
|
||||
};
|
||||
|
||||
struct gic_pending_regs {
|
||||
DECLARE_BITMAP(pending, GIC_NUM_INTRS);
|
||||
DECLARE_BITMAP(pending, GIC_NUM_INTRS);
|
||||
};
|
||||
|
||||
struct gic_intrmask_regs {
|
||||
DECLARE_BITMAP(intrmask, GIC_NUM_INTRS);
|
||||
DECLARE_BITMAP(intrmask, GIC_NUM_INTRS);
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -341,15 +341,44 @@ struct gic_shared_intr_map {
|
||||
unsigned int local_intr_mask;
|
||||
};
|
||||
|
||||
/* GIC nomenclature for Core Interrupt Pins. */
|
||||
#define GIC_CPU_INT0 0 /* Core Interrupt 2 */
|
||||
#define GIC_CPU_INT1 1 /* . */
|
||||
#define GIC_CPU_INT2 2 /* . */
|
||||
#define GIC_CPU_INT3 3 /* . */
|
||||
#define GIC_CPU_INT4 4 /* . */
|
||||
#define GIC_CPU_INT5 5 /* Core Interrupt 5 */
|
||||
|
||||
/* Local GIC interrupts. */
|
||||
#define GIC_INT_TMR (GIC_CPU_INT5)
|
||||
#define GIC_INT_PERFCTR (GIC_CPU_INT5)
|
||||
|
||||
/* Add 2 to convert non-EIC hardware interrupt to EIC vector number. */
|
||||
#define GIC_CPU_TO_VEC_OFFSET (2)
|
||||
|
||||
/* Mapped interrupt to pin X, then GIC will generate the vector (X+1). */
|
||||
#define GIC_PIN_TO_VEC_OFFSET (1)
|
||||
|
||||
extern unsigned long _gic_base;
|
||||
extern unsigned int gic_irq_base;
|
||||
extern unsigned int gic_irq_flags[];
|
||||
extern struct gic_shared_intr_map gic_shared_intr_map[];
|
||||
|
||||
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);
|
||||
|
||||
extern void gic_clocksource_init(unsigned int);
|
||||
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);
|
||||
extern void gic_enable_interrupt(int irq_vec);
|
||||
extern void gic_disable_interrupt(int irq_vec);
|
||||
extern void gic_irq_ack(struct irq_data *d);
|
||||
extern void gic_finish_irq(struct irq_data *d);
|
||||
extern void gic_platform_init(int irqs, struct irq_chip *irq_controller);
|
||||
|
||||
#endif /* _ASM_GICREGS_H */
|
||||
|
72
arch/mips/include/asm/mach-sead3/cpu-feature-overrides.h
Normal file
72
arch/mips/include/asm/mach-sead3/cpu-feature-overrides.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* 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) 2003, 2004 Chris Dearman
|
||||
* Copyright (C) 2005 Ralf Baechle (ralf@linux-mips.org)
|
||||
*/
|
||||
#ifndef __ASM_MACH_MIPS_CPU_FEATURE_OVERRIDES_H
|
||||
#define __ASM_MACH_MIPS_CPU_FEATURE_OVERRIDES_H
|
||||
|
||||
|
||||
/*
|
||||
* CPU feature overrides for MIPS boards
|
||||
*/
|
||||
#ifdef CONFIG_CPU_MIPS32
|
||||
#define cpu_has_tlb 1
|
||||
#define cpu_has_4kex 1
|
||||
#define cpu_has_4k_cache 1
|
||||
/* #define cpu_has_fpu ? */
|
||||
/* #define cpu_has_32fpr ? */
|
||||
#define cpu_has_counter 1
|
||||
/* #define cpu_has_watch ? */
|
||||
#define cpu_has_divec 1
|
||||
#define cpu_has_vce 0
|
||||
/* #define cpu_has_cache_cdex_p ? */
|
||||
/* #define cpu_has_cache_cdex_s ? */
|
||||
/* #define cpu_has_prefetch ? */
|
||||
#define cpu_has_mcheck 1
|
||||
/* #define cpu_has_ejtag ? */
|
||||
#ifdef CONFIG_CPU_HAS_LLSC
|
||||
#define cpu_has_llsc 1
|
||||
#else
|
||||
#define cpu_has_llsc 0
|
||||
#endif
|
||||
/* #define cpu_has_vtag_icache ? */
|
||||
/* #define cpu_has_dc_aliases ? */
|
||||
/* #define cpu_has_ic_fills_f_dc ? */
|
||||
#define cpu_has_nofpuex 0
|
||||
/* #define cpu_has_64bits ? */
|
||||
/* #define cpu_has_64bit_zero_reg ? */
|
||||
/* #define cpu_has_inclusive_pcaches ? */
|
||||
#define cpu_icache_snoops_remote_store 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_MIPS64
|
||||
#define cpu_has_tlb 1
|
||||
#define cpu_has_4kex 1
|
||||
#define cpu_has_4k_cache 1
|
||||
/* #define cpu_has_fpu ? */
|
||||
/* #define cpu_has_32fpr ? */
|
||||
#define cpu_has_counter 1
|
||||
/* #define cpu_has_watch ? */
|
||||
#define cpu_has_divec 1
|
||||
#define cpu_has_vce 0
|
||||
/* #define cpu_has_cache_cdex_p ? */
|
||||
/* #define cpu_has_cache_cdex_s ? */
|
||||
/* #define cpu_has_prefetch ? */
|
||||
#define cpu_has_mcheck 1
|
||||
/* #define cpu_has_ejtag ? */
|
||||
#define cpu_has_llsc 1
|
||||
/* #define cpu_has_vtag_icache ? */
|
||||
/* #define cpu_has_dc_aliases ? */
|
||||
/* #define cpu_has_ic_fills_f_dc ? */
|
||||
#define cpu_has_nofpuex 0
|
||||
/* #define cpu_has_64bits ? */
|
||||
/* #define cpu_has_64bit_zero_reg ? */
|
||||
/* #define cpu_has_inclusive_pcaches ? */
|
||||
#define cpu_icache_snoops_remote_store 1
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_MACH_MIPS_CPU_FEATURE_OVERRIDES_H */
|
9
arch/mips/include/asm/mach-sead3/irq.h
Normal file
9
arch/mips/include/asm/mach-sead3/irq.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef __ASM_MACH_MIPS_IRQ_H
|
||||
#define __ASM_MACH_MIPS_IRQ_H
|
||||
|
||||
#define NR_IRQS 256
|
||||
|
||||
|
||||
#include_next <irq.h>
|
||||
|
||||
#endif /* __ASM_MACH_MIPS_IRQ_H */
|
52
arch/mips/include/asm/mach-sead3/kernel-entry-init.h
Normal file
52
arch/mips/include/asm/mach-sead3/kernel-entry-init.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* 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.
|
||||
*
|
||||
* Chris Dearman (chris@mips.com)
|
||||
* Copyright (C) 2007 Mips Technologies, Inc.
|
||||
*/
|
||||
#ifndef __ASM_MACH_MIPS_KERNEL_ENTRY_INIT_H
|
||||
#define __ASM_MACH_MIPS_KERNEL_ENTRY_INIT_H
|
||||
|
||||
.macro kernel_entry_setup
|
||||
#ifdef CONFIG_MIPS_MT_SMTC
|
||||
mfc0 t0, CP0_CONFIG
|
||||
bgez t0, 9f
|
||||
mfc0 t0, CP0_CONFIG, 1
|
||||
bgez t0, 9f
|
||||
mfc0 t0, CP0_CONFIG, 2
|
||||
bgez t0, 9f
|
||||
mfc0 t0, CP0_CONFIG, 3
|
||||
and t0, 1<<2
|
||||
bnez t0, 0f
|
||||
9 :
|
||||
/* Assume we came from YAMON... */
|
||||
PTR_LA v0, 0x9fc00534 /* YAMON print */
|
||||
lw v0, (v0)
|
||||
move a0, zero
|
||||
PTR_LA a1, nonmt_processor
|
||||
jal v0
|
||||
|
||||
PTR_LA v0, 0x9fc00520 /* YAMON exit */
|
||||
lw v0, (v0)
|
||||
li a0, 1
|
||||
jal v0
|
||||
|
||||
1 : b 1b
|
||||
|
||||
__INITDATA
|
||||
nonmt_processor :
|
||||
.asciz "SMTC kernel requires the MT ASE to run\n"
|
||||
__FINIT
|
||||
0 :
|
||||
#endif
|
||||
.endm
|
||||
|
||||
/*
|
||||
* Do SMP slave processor setup necessary before we can safely execute C code.
|
||||
*/
|
||||
.macro smp_slave_setup
|
||||
.endm
|
||||
|
||||
#endif /* __ASM_MACH_MIPS_KERNEL_ENTRY_INIT_H */
|
25
arch/mips/include/asm/mach-sead3/war.h
Normal file
25
arch/mips/include/asm/mach-sead3/war.h
Normal file
@@ -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_MIPS_WAR_H
|
||||
#define __ASM_MIPS_MACH_MIPS_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 1
|
||||
#define MIPS_CACHE_SYNC_WAR 1
|
||||
#define TX49XX_ICACHE_INDEX_INV_WAR 0
|
||||
#define RM9000_CDEX_SMP_WAR 0
|
||||
#define ICACHE_REFILLS_WORKAROUND_WAR 1
|
||||
#define R10000_LLSC_WAR 0
|
||||
#define MIPS34K_MISSED_ITLB_WAR 0
|
||||
|
||||
#endif /* __ASM_MIPS_MACH_MIPS_WAR_H */
|
@@ -1,31 +1,16 @@
|
||||
/*
|
||||
* Carsten Langgaard, carstenl@mips.com
|
||||
* Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
|
||||
*
|
||||
* ########################################################################
|
||||
*
|
||||
* This program is free software; you can distribute it and/or modify it
|
||||
* under the terms of the GNU General Public License (Version 2) as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope 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.,
|
||||
* 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
||||
*
|
||||
* ########################################################################
|
||||
*
|
||||
* Defines for the Malta interrupt controller.
|
||||
* 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) 2000,2012 MIPS Technologies, Inc. All rights reserved.
|
||||
* Carsten Langgaard <carstenl@mips.com>
|
||||
* Steven J. Hill <sjhill@mips.com>
|
||||
*/
|
||||
#ifndef _MIPS_MALTAINT_H
|
||||
#define _MIPS_MALTAINT_H
|
||||
|
||||
#include <irq.h>
|
||||
#define MIPS_GIC_IRQ_BASE (MIPS_CPU_IRQ_BASE + 8)
|
||||
|
||||
/*
|
||||
* Interrupts 0..15 are used for Malta ISA compatible interrupts
|
||||
@@ -78,26 +63,6 @@
|
||||
#define MSC01E_INT_PERFCTR 10
|
||||
#define MSC01E_INT_CPUCTR 11
|
||||
|
||||
/* GIC's Nomenclature for Core Interrupt Pins on the Malta */
|
||||
#define GIC_CPU_INT0 0 /* Core Interrupt 2 */
|
||||
#define GIC_CPU_INT1 1 /* . */
|
||||
#define GIC_CPU_INT2 2 /* . */
|
||||
#define GIC_CPU_INT3 3 /* . */
|
||||
#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 */
|
||||
#define GIC_IPI_EXT_INTR_RESCHED_VPE0 16
|
||||
#define GIC_IPI_EXT_INTR_CALLFNC_VPE0 17
|
||||
@@ -108,10 +73,4 @@
|
||||
#define GIC_IPI_EXT_INTR_RESCHED_VPE3 22
|
||||
#define GIC_IPI_EXT_INTR_CALLFNC_VPE3 23
|
||||
|
||||
#define MIPS_GIC_IRQ_BASE (MIPS_CPU_IRQ_BASE + 8)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
extern void maltaint_init(void);
|
||||
#endif
|
||||
|
||||
#endif /* !(_MIPS_MALTAINT_H) */
|
||||
|
19
arch/mips/include/asm/mips-boards/sead3int.h
Normal file
19
arch/mips/include/asm/mips-boards/sead3int.h
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* 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) 2000,2012 MIPS Technologies, Inc. All rights reserved.
|
||||
* Douglas Leung <douglas@mips.com>
|
||||
* Steven J. Hill <sjhill@mips.com>
|
||||
*/
|
||||
#ifndef _MIPS_SEAD3INT_H
|
||||
#define _MIPS_SEAD3INT_H
|
||||
|
||||
/* SEAD-3 GIC address space definitions. */
|
||||
#define GIC_BASE_ADDR 0x1b1c0000
|
||||
#define GIC_ADDRSPACE_SZ (128 * 1024)
|
||||
|
||||
#define MIPS_GIC_IRQ_BASE (MIPS_CPU_IRQ_BASE + 0)
|
||||
|
||||
#endif /* !(_MIPS_SEAD3INT_H) */
|
@@ -597,6 +597,8 @@
|
||||
#define MIPS_CONF4_MMUEXTDEF (_ULCAST_(3) << 14)
|
||||
#define MIPS_CONF4_MMUEXTDEF_MMUSIZEEXT (_ULCAST_(1) << 14)
|
||||
|
||||
#define MIPS_CONF6_SYND (_ULCAST_(1) << 13)
|
||||
|
||||
#define MIPS_CONF7_WII (_ULCAST_(1) << 31)
|
||||
|
||||
#define MIPS_CONF7_RPS (_ULCAST_(1) << 2)
|
||||
|
@@ -90,6 +90,8 @@ Ip_u2u1u3(_dsrl);
|
||||
Ip_u2u1u3(_dsrl32);
|
||||
Ip_u3u1u2(_dsubu);
|
||||
Ip_0(_eret);
|
||||
Ip_u2u1msbu3(_ext);
|
||||
Ip_u2u1msbu3(_ins);
|
||||
Ip_u1(_j);
|
||||
Ip_u1(_jal);
|
||||
Ip_u1(_jr);
|
||||
|
Reference in New Issue
Block a user