提交 8bff8399 编写于 作者: L Linus Torvalds

Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus

Pull MIPS fixes from Ralf Baechle:
 "Another round of MIPS fixes for 4.2.

  Things are looking quite decent at this stage but the recent work on
  the FPU support took its toll:

   - fix an incorrect overly restrictive ifdef

   - select O32 64-bit FP support for O32 binary compatibility

   - remove workarounds for Sibyte SB1250 Pass1 parts.  There are rare
     fixing the workarounds is not worth the effort.

   - patch up an outdated and now incorrect comment"

* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
  MIPS: fpu.h: Allow 64-bit FPU on a 64-bit MIPS R6 CPU
  MIPS: SB1: Remove support for Pass 1 parts.
  MIPS: Require O32 FP64 support for MIPS64 with O32 compat
  MIPS: asm-offset.c: Patch up various comments refering to the old filename.
...@@ -1427,6 +1427,7 @@ config CPU_MIPS64_R6 ...@@ -1427,6 +1427,7 @@ config CPU_MIPS64_R6
select CPU_SUPPORTS_HIGHMEM select CPU_SUPPORTS_HIGHMEM
select CPU_SUPPORTS_MSA select CPU_SUPPORTS_MSA
select GENERIC_CSUM select GENERIC_CSUM
select MIPS_O32_FP64_SUPPORT if MIPS32_O32
help help
Choose this option to build a kernel for release 6 or later of the Choose this option to build a kernel for release 6 or later of the
MIPS64 architecture. New MIPS processors, starting with the Warrior MIPS64 architecture. New MIPS processors, starting with the Warrior
...@@ -2262,11 +2263,6 @@ config MIPS_CM ...@@ -2262,11 +2263,6 @@ config MIPS_CM
config MIPS_CPC config MIPS_CPC
bool bool
config SB1_PASS_1_WORKAROUNDS
bool
depends on CPU_SB1_PASS_1
default y
config SB1_PASS_2_WORKAROUNDS config SB1_PASS_2_WORKAROUNDS
bool bool
depends on CPU_SB1 && (CPU_SB1_PASS_2_2 || CPU_SB1_PASS_2) depends on CPU_SB1 && (CPU_SB1_PASS_2_2 || CPU_SB1_PASS_2)
......
...@@ -181,13 +181,6 @@ cflags-$(CONFIG_CPU_R4000_WORKAROUNDS) += $(call cc-option,-mfix-r4000,) ...@@ -181,13 +181,6 @@ cflags-$(CONFIG_CPU_R4000_WORKAROUNDS) += $(call cc-option,-mfix-r4000,)
cflags-$(CONFIG_CPU_R4400_WORKAROUNDS) += $(call cc-option,-mfix-r4400,) cflags-$(CONFIG_CPU_R4400_WORKAROUNDS) += $(call cc-option,-mfix-r4400,)
cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS) += $(call cc-option,-mno-daddi,) cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS) += $(call cc-option,-mno-daddi,)
ifdef CONFIG_CPU_SB1
ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
KBUILD_AFLAGS_MODULE += -msb1-pass1-workarounds
KBUILD_CFLAGS_MODULE += -msb1-pass1-workarounds
endif
endif
# For smartmips configurations, there are hundreds of warnings due to ISA overrides # For smartmips configurations, there are hundreds of warnings due to ISA overrides
# in assembly and header files. smartmips is only supported for MIPS32r1 onwards # in assembly and header files. smartmips is only supported for MIPS32r1 onwards
# and there is no support for 64-bit. Various '.set mips2' or '.set mips3' or # and there is no support for 64-bit. Various '.set mips2' or '.set mips3' or
......
...@@ -74,7 +74,7 @@ static inline int __enable_fpu(enum fpu_mode mode) ...@@ -74,7 +74,7 @@ static inline int __enable_fpu(enum fpu_mode mode)
goto fr_common; goto fr_common;
case FPU_64BIT: case FPU_64BIT:
#if !(defined(CONFIG_CPU_MIPS32_R2) || defined(CONFIG_CPU_MIPS32_R6) \ #if !(defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR6) \
|| defined(CONFIG_64BIT)) || defined(CONFIG_64BIT))
/* we only have a 32-bit FPU */ /* we only have a 32-bit FPU */
return SIGFPE; return SIGFPE;
......
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
#define R4600_V2_HIT_CACHEOP_WAR 0 #define R4600_V2_HIT_CACHEOP_WAR 0
#define R5432_CP0_INTERRUPT_WAR 0 #define R5432_CP0_INTERRUPT_WAR 0
#if defined(CONFIG_SB1_PASS_1_WORKAROUNDS) || \ #if defined(CONFIG_SB1_PASS_2_WORKAROUNDS)
defined(CONFIG_SB1_PASS_2_WORKAROUNDS)
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
extern int sb1250_m3_workaround_needed(void); extern int sb1250_m3_workaround_needed(void);
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
/* /*
* Keep this struct definition in sync with the sigcontext fragment * Keep this struct definition in sync with the sigcontext fragment
* in arch/mips/tools/offset.c * in arch/mips/kernel/asm-offsets.c
*/ */
struct sigcontext { struct sigcontext {
unsigned int sc_regmask; /* Unused */ unsigned int sc_regmask; /* Unused */
...@@ -46,7 +46,7 @@ struct sigcontext { ...@@ -46,7 +46,7 @@ struct sigcontext {
#include <linux/posix_types.h> #include <linux/posix_types.h>
/* /*
* Keep this struct definition in sync with the sigcontext fragment * Keep this struct definition in sync with the sigcontext fragment
* in arch/mips/tools/offset.c * in arch/mips/kernel/asm-offsets.c
* *
* Warning: this structure illdefined with sc_badvaddr being just an unsigned * Warning: this structure illdefined with sc_badvaddr being just an unsigned
* int so it was changed to unsigned long in 2.6.0-test1. This may break * int so it was changed to unsigned long in 2.6.0-test1. This may break
......
/* /*
* offset.c: Calculate pt_regs and task_struct offsets. * asm-offsets.c: Calculate pt_regs and task_struct offsets.
* *
* Copyright (C) 1996 David S. Miller * Copyright (C) 1996 David S. Miller
* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Ralf Baechle * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Ralf Baechle
......
...@@ -81,11 +81,6 @@ choice ...@@ -81,11 +81,6 @@ choice
prompt "SiByte SOC Stepping" prompt "SiByte SOC Stepping"
depends on SIBYTE_SB1xxx_SOC depends on SIBYTE_SB1xxx_SOC
config CPU_SB1_PASS_1
bool "1250 Pass1"
depends on SIBYTE_SB1250
select CPU_HAS_PREFETCH
config CPU_SB1_PASS_2_1250 config CPU_SB1_PASS_2_1250
bool "1250 An" bool "1250 An"
depends on SIBYTE_SB1250 depends on SIBYTE_SB1250
......
...@@ -81,10 +81,7 @@ void check_bus_watcher(void) ...@@ -81,10 +81,7 @@ void check_bus_watcher(void)
{ {
u32 status, l2_err, memio_err; u32 status, l2_err, memio_err;
#ifdef CONFIG_SB1_PASS_1_WORKAROUNDS #if defined(CONFIG_SIBYTE_BCM112X) || defined(CONFIG_SIBYTE_SB1250)
/* Destructive read, clears register and interrupt */
status = csr_in32(IOADDR(A_SCD_BUS_ERR_STATUS));
#elif defined(CONFIG_SIBYTE_BCM112X) || defined(CONFIG_SIBYTE_SB1250)
/* Use non-destructive register */ /* Use non-destructive register */
status = csr_in32(IOADDR(A_SCD_BUS_ERR_STATUS_DEBUG)); status = csr_in32(IOADDR(A_SCD_BUS_ERR_STATUS_DEBUG));
#elif defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80) #elif defined(CONFIG_SIBYTE_BCM1x55) || defined(CONFIG_SIBYTE_BCM1x80)
......
...@@ -202,12 +202,10 @@ void __init sb1250_setup(void) ...@@ -202,12 +202,10 @@ void __init sb1250_setup(void)
switch (war_pass) { switch (war_pass) {
case K_SYS_REVISION_BCM1250_PASS1: case K_SYS_REVISION_BCM1250_PASS1:
#ifndef CONFIG_SB1_PASS_1_WORKAROUNDS
printk("@@@@ This is a BCM1250 A0-A2 (Pass 1) board, " printk("@@@@ This is a BCM1250 A0-A2 (Pass 1) board, "
"and the kernel doesn't have the proper " "and the kernel doesn't have the proper "
"workarounds compiled in. @@@@\n"); "workarounds compiled in. @@@@\n");
bad_config = 1; bad_config = 1;
#endif
break; break;
case K_SYS_REVISION_BCM1250_PASS2: case K_SYS_REVISION_BCM1250_PASS2:
/* Pass 2 - easiest as default for now - so many numbers */ /* Pass 2 - easiest as default for now - so many numbers */
......
...@@ -1508,16 +1508,7 @@ static void sbmac_channel_start(struct sbmac_softc *s) ...@@ -1508,16 +1508,7 @@ static void sbmac_channel_start(struct sbmac_softc *s)
__raw_writeq(reg, port); __raw_writeq(reg, port);
port = s->sbm_base + R_MAC_ETHERNET_ADDR; port = s->sbm_base + R_MAC_ETHERNET_ADDR;
#ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
/*
* Pass1 SOCs do not receive packets addressed to the
* destination address in the R_MAC_ETHERNET_ADDR register.
* Set the value to zero.
*/
__raw_writeq(0, port);
#else
__raw_writeq(reg, port); __raw_writeq(reg, port);
#endif
/* /*
* Set the receive filter for no packets, and write values * Set the receive filter for no packets, and write values
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册