diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-09 21:10:34 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-09 21:10:34 -0400 |
commit | 82abb273d838318424644d8f02825db0fbbd400a (patch) | |
tree | e1ea8a92db4ba68f347249986ffe3a25ffbf8219 /arch/mips/kernel/r4k_switch.S | |
parent | 9b651cc2277b5e4883012ebab0fea2bcda4cbafa (diff) | |
parent | f8647b506d7116a1a3accd8d618184096e85f50b (diff) |
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS updates from Ralf Baechle:
- three fixes for 3.15 that didn't make it in time
- limited Octeon 3 support.
- paravirtualization support
- improvment to platform support for Netlogix SOCs.
- add support for powering down the Malta eval board in software
- add many instructions to the in-kernel microassembler.
- add support for the BPF JIT.
- minor cleanups of the BCM47xx code.
- large cleanup of math emu code resulting in significant code size
reduction, better readability of the code and more accurate
emulation.
- improvments to the MIPS CPS code.
- support C3 power status for the R4k count/compare clock device.
- improvments to the GIO support for older SGI workstations.
- increase number of supported CPUs to 256; this can be reached on
certain embedded multithreaded ccNUMA configurations.
- various small cleanups, updates and fixes
* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (173 commits)
MIPS: IP22/IP28: Improve GIO support
MIPS: Octeon: Add twsi interrupt initialization for OCTEON 3XXX, 5XXX, 63XX
DEC: Document the R4k MB ASIC mini interrupt controller
DEC: Add self as the maintainer
MIPS: Add microMIPS MSA support.
MIPS: Replace calls to obsolete strict_strto call with kstrto* equivalents.
MIPS: Replace obsolete strict_strto call with kstrto
MIPS: BFP: Simplify code slightly.
MIPS: Call find_vma with the mmap_sem held
MIPS: Fix 'write_msa_##' inline macro.
MIPS: Fix MSA toolchain support detection.
mips: Update the email address of Geert Uytterhoeven
MIPS: Add minimal defconfig for mips_paravirt
MIPS: Enable build for new system 'paravirt'
MIPS: paravirt: Add pci controller for virtio
MIPS: Add code for new system 'paravirt'
MIPS: Add functions for hypervisor call
MIPS: OCTEON: Add OCTEON3 to __get_cpu_type
MIPS: Add function get_ebase_cpunum
MIPS: Add minimal support for OCTEON3 to c-r4k.c
...
Diffstat (limited to 'arch/mips/kernel/r4k_switch.S')
-rw-r--r-- | arch/mips/kernel/r4k_switch.S | 36 |
1 files changed, 3 insertions, 33 deletions
diff --git a/arch/mips/kernel/r4k_switch.S b/arch/mips/kernel/r4k_switch.S index abacac7c33ef..81ca3f70fe29 100644 --- a/arch/mips/kernel/r4k_switch.S +++ b/arch/mips/kernel/r4k_switch.S | |||
@@ -28,6 +28,7 @@ | |||
28 | */ | 28 | */ |
29 | #define ST_OFF (_THREAD_SIZE - 32 - PT_SIZE + PT_STATUS) | 29 | #define ST_OFF (_THREAD_SIZE - 32 - PT_SIZE + PT_STATUS) |
30 | 30 | ||
31 | #ifndef USE_ALTERNATE_RESUME_IMPL | ||
31 | /* | 32 | /* |
32 | * task_struct *resume(task_struct *prev, task_struct *next, | 33 | * task_struct *resume(task_struct *prev, task_struct *next, |
33 | * struct thread_info *next_ti, s32 fp_save) | 34 | * struct thread_info *next_ti, s32 fp_save) |
@@ -87,18 +88,6 @@ | |||
87 | 88 | ||
88 | PTR_ADDU t0, $28, _THREAD_SIZE - 32 | 89 | PTR_ADDU t0, $28, _THREAD_SIZE - 32 |
89 | set_saved_sp t0, t1, t2 | 90 | set_saved_sp t0, t1, t2 |
90 | #ifdef CONFIG_MIPS_MT_SMTC | ||
91 | /* Read-modify-writes of Status must be atomic on a VPE */ | ||
92 | mfc0 t2, CP0_TCSTATUS | ||
93 | ori t1, t2, TCSTATUS_IXMT | ||
94 | mtc0 t1, CP0_TCSTATUS | ||
95 | andi t2, t2, TCSTATUS_IXMT | ||
96 | _ehb | ||
97 | DMT 8 # dmt t0 | ||
98 | move t1,ra | ||
99 | jal mips_ihb | ||
100 | move ra,t1 | ||
101 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
102 | mfc0 t1, CP0_STATUS /* Do we really need this? */ | 91 | mfc0 t1, CP0_STATUS /* Do we really need this? */ |
103 | li a3, 0xff01 | 92 | li a3, 0xff01 |
104 | and t1, a3 | 93 | and t1, a3 |
@@ -107,22 +96,12 @@ | |||
107 | and a2, a3 | 96 | and a2, a3 |
108 | or a2, t1 | 97 | or a2, t1 |
109 | mtc0 a2, CP0_STATUS | 98 | mtc0 a2, CP0_STATUS |
110 | #ifdef CONFIG_MIPS_MT_SMTC | ||
111 | _ehb | ||
112 | andi t0, t0, VPECONTROL_TE | ||
113 | beqz t0, 1f | ||
114 | emt | ||
115 | 1: | ||
116 | mfc0 t1, CP0_TCSTATUS | ||
117 | xori t1, t1, TCSTATUS_IXMT | ||
118 | or t1, t1, t2 | ||
119 | mtc0 t1, CP0_TCSTATUS | ||
120 | _ehb | ||
121 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
122 | move v0, a0 | 99 | move v0, a0 |
123 | jr ra | 100 | jr ra |
124 | END(resume) | 101 | END(resume) |
125 | 102 | ||
103 | #endif /* USE_ALTERNATE_RESUME_IMPL */ | ||
104 | |||
126 | /* | 105 | /* |
127 | * Save a thread's fp context. | 106 | * Save a thread's fp context. |
128 | */ | 107 | */ |
@@ -176,19 +155,10 @@ LEAF(_restore_msa) | |||
176 | #define FPU_DEFAULT 0x00000000 | 155 | #define FPU_DEFAULT 0x00000000 |
177 | 156 | ||
178 | LEAF(_init_fpu) | 157 | LEAF(_init_fpu) |
179 | #ifdef CONFIG_MIPS_MT_SMTC | ||
180 | /* Rather than manipulate per-VPE Status, set per-TC bit in TCStatus */ | ||
181 | mfc0 t0, CP0_TCSTATUS | ||
182 | /* Bit position is the same for Status, TCStatus */ | ||
183 | li t1, ST0_CU1 | ||
184 | or t0, t1 | ||
185 | mtc0 t0, CP0_TCSTATUS | ||
186 | #else /* Normal MIPS CU1 enable */ | ||
187 | mfc0 t0, CP0_STATUS | 158 | mfc0 t0, CP0_STATUS |
188 | li t1, ST0_CU1 | 159 | li t1, ST0_CU1 |
189 | or t0, t1 | 160 | or t0, t1 |
190 | mtc0 t0, CP0_STATUS | 161 | mtc0 t0, CP0_STATUS |
191 | #endif /* CONFIG_MIPS_MT_SMTC */ | ||
192 | enable_fpu_hazard | 162 | enable_fpu_hazard |
193 | 163 | ||
194 | li t1, FPU_DEFAULT | 164 | li t1, FPU_DEFAULT |