summaryrefslogtreecommitdiff
path: root/arch/mips/kernel/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel/setup.c')
-rw-r--r--arch/mips/kernel/setup.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index a1336d16c57e..c7d1d76c9c8b 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -71,7 +71,6 @@ EXPORT_SYMBOL(mips_machgroup);
struct boot_mem_map boot_mem_map;
static char command_line[CL_SIZE];
- char saved_command_line[CL_SIZE];
char arcs_cmdline[CL_SIZE]=CONFIG_CMDLINE;
/*
@@ -453,14 +452,18 @@ static void __init do_earlyinitcalls(void)
void __init setup_arch(char **cmdline_p)
{
+ unsigned int status;
+
cpu_probe();
prom_init();
cpu_report();
#ifdef CONFIG_MIPS32
/* Disable coprocessors and set FPU for 16/32 FPR register model */
- clear_c0_status(ST0_CU1|ST0_CU2|ST0_CU3|ST0_KX|ST0_SX|ST0_FR);
- set_c0_status(ST0_CU0);
+ status = read_c0_status();
+ status &= ~(ST0_CU1|ST0_CU2|ST0_CU3|ST0_KX|ST0_SX|ST0_FR);
+ status |= ST0_CU0;
+ write_c0_status(status);
#endif
#ifdef CONFIG_MIPS64
/*
@@ -468,8 +471,10 @@ void __init setup_arch(char **cmdline_p)
* Maybe because the kernel is in ckseg0 and not xkphys? Clear it
* anyway ...
*/
- clear_c0_status(ST0_BEV|ST0_TS|ST0_CU1|ST0_CU2|ST0_CU3);
- set_c0_status(ST0_CU0|ST0_KX|ST0_SX|ST0_FR);
+ status = read_c0_status();
+ status &= ~(ST0_BEV|ST0_TS|ST0_CU1|ST0_CU2|ST0_CU3);
+ status |= (ST0_CU0|ST0_KX|ST0_SX|ST0_FR);
+ write_c0_status(status);
#endif
#if defined(CONFIG_VT)