Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
4277ff5e
Commit
4277ff5e
authored
Jun 03, 2006
by
Ralf Baechle
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[MIPS] Fix use of ehb instruction for non-R2 configurations.
Signed-off-by:
Ralf Baechle
<
ralf@linux-mips.org
>
parent
b4ab24e1
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
27 additions
and
26 deletions
+27
-26
arch/mips/kernel/entry.S
arch/mips/kernel/entry.S
+3
-3
arch/mips/kernel/gdb-low.S
arch/mips/kernel/gdb-low.S
+2
-2
arch/mips/kernel/genex.S
arch/mips/kernel/genex.S
+1
-1
arch/mips/kernel/head.S
arch/mips/kernel/head.S
+1
-1
arch/mips/kernel/r4k_switch.S
arch/mips/kernel/r4k_switch.S
+3
-3
arch/mips/kernel/smtc-asm.S
arch/mips/kernel/smtc-asm.S
+5
-5
include/asm-mips/asmmacro.h
include/asm-mips/asmmacro.h
+2
-2
include/asm-mips/mipsregs.h
include/asm-mips/mipsregs.h
+2
-1
include/asm-mips/stackframe.h
include/asm-mips/stackframe.h
+8
-8
No files found.
arch/mips/kernel/entry.S
View file @
4277ff5e
...
@@ -87,7 +87,7 @@ FEXPORT(restore_all) # restore full frame
...
@@ -87,7 +87,7 @@ FEXPORT(restore_all) # restore full frame
ori
v1
,
v0
,
TCSTATUS_IXMT
ori
v1
,
v0
,
TCSTATUS_IXMT
mtc0
v1
,
CP0_TCSTATUS
mtc0
v1
,
CP0_TCSTATUS
andi
v0
,
TCSTATUS_IXMT
andi
v0
,
TCSTATUS_IXMT
ehb
_
ehb
mfc0
t0
,
CP0_TCCONTEXT
mfc0
t0
,
CP0_TCCONTEXT
DMT
9
#
dmt
t1
DMT
9
#
dmt
t1
jal
mips_ihb
jal
mips_ihb
...
@@ -95,7 +95,7 @@ FEXPORT(restore_all) # restore full frame
...
@@ -95,7 +95,7 @@ FEXPORT(restore_all) # restore full frame
andi
t3
,
t0
,
0xff00
andi
t3
,
t0
,
0xff00
or
t2
,
t2
,
t3
or
t2
,
t2
,
t3
mtc0
t2
,
CP0_STATUS
mtc0
t2
,
CP0_STATUS
ehb
_
ehb
andi
t1
,
t1
,
VPECONTROL_TE
andi
t1
,
t1
,
VPECONTROL_TE
beqz
t1
,
1
f
beqz
t1
,
1
f
EMT
EMT
...
@@ -105,7 +105,7 @@ FEXPORT(restore_all) # restore full frame
...
@@ -105,7 +105,7 @@ FEXPORT(restore_all) # restore full frame
xori
v1
,
v1
,
TCSTATUS_IXMT
xori
v1
,
v1
,
TCSTATUS_IXMT
or
v1
,
v0
,
v1
or
v1
,
v0
,
v1
mtc0
v1
,
CP0_TCSTATUS
mtc0
v1
,
CP0_TCSTATUS
ehb
_
ehb
xor
t0
,
t0
,
t3
xor
t0
,
t0
,
t3
mtc0
t0
,
CP0_TCCONTEXT
mtc0
t0
,
CP0_TCCONTEXT
#endif /* CONFIG_MIPS_MT_SMTC */
#endif /* CONFIG_MIPS_MT_SMTC */
...
...
arch/mips/kernel/gdb-low.S
View file @
4277ff5e
...
@@ -291,7 +291,7 @@
...
@@ -291,7 +291,7 @@
ori
t1
,
t2
,
TCSTATUS_IXMT
ori
t1
,
t2
,
TCSTATUS_IXMT
mtc0
t1
,
CP0_TCSTATUS
mtc0
t1
,
CP0_TCSTATUS
andi
t2
,
t2
,
TCSTATUS_IXMT
andi
t2
,
t2
,
TCSTATUS_IXMT
ehb
_
ehb
DMT
9
#
dmt
t1
DMT
9
#
dmt
t1
jal
mips_ihb
jal
mips_ihb
nop
nop
...
@@ -310,7 +310,7 @@
...
@@ -310,7 +310,7 @@
xori
t1
,
t1
,
TCSTATUS_IXMT
xori
t1
,
t1
,
TCSTATUS_IXMT
or
t1
,
t1
,
t2
or
t1
,
t1
,
t2
mtc0
t1
,
CP0_TCSTATUS
mtc0
t1
,
CP0_TCSTATUS
ehb
_
ehb
#endif /* CONFIG_MIPS_MT_SMTC */
#endif /* CONFIG_MIPS_MT_SMTC */
LONG_L
v0
,
GDB_FR_STATUS
(
sp
)
LONG_L
v0
,
GDB_FR_STATUS
(
sp
)
LONG_L
v1
,
GDB_FR_EPC
(
sp
)
LONG_L
v1
,
GDB_FR_EPC
(
sp
)
...
...
arch/mips/kernel/genex.S
View file @
4277ff5e
...
@@ -214,7 +214,7 @@ NESTED(except_vec_vi_handler, 0, sp)
...
@@ -214,7 +214,7 @@ NESTED(except_vec_vi_handler, 0, sp)
mtc0
t0
,
CP0_TCCONTEXT
mtc0
t0
,
CP0_TCCONTEXT
xor
t1
,
t1
,
t0
xor
t1
,
t1
,
t0
mtc0
t1
,
CP0_STATUS
mtc0
t1
,
CP0_STATUS
ehb
_
ehb
#endif /* CONFIG_MIPS_MT_SMTC */
#endif /* CONFIG_MIPS_MT_SMTC */
CLI
CLI
move
a0
,
sp
move
a0
,
sp
...
...
arch/mips/kernel/head.S
View file @
4277ff5e
...
@@ -96,7 +96,7 @@
...
@@ -96,7 +96,7 @@
/
*
Clear
TKSU
,
leave
IXMT
*/
/
*
Clear
TKSU
,
leave
IXMT
*/
xori
t0
,
0x00001800
xori
t0
,
0x00001800
mtc0
t0
,
CP0_TCSTATUS
mtc0
t0
,
CP0_TCSTATUS
ehb
_
ehb
/
*
We
need
to
leave
the
global
IE
bit
set
,
but
clear
EXL
...
*/
/
*
We
need
to
leave
the
global
IE
bit
set
,
but
clear
EXL
...
*/
mfc0
t0
,
CP0_STATUS
mfc0
t0
,
CP0_STATUS
or
t0
,
ST0_CU0
| ST0_EXL |
ST0_ERL
| \set |
\
clr
or
t0
,
ST0_CU0
| ST0_EXL |
ST0_ERL
| \set |
\
clr
...
...
arch/mips/kernel/r4k_switch.S
View file @
4277ff5e
...
@@ -94,7 +94,7 @@
...
@@ -94,7 +94,7 @@
ori
t1
,
t2
,
TCSTATUS_IXMT
ori
t1
,
t2
,
TCSTATUS_IXMT
mtc0
t1
,
CP0_TCSTATUS
mtc0
t1
,
CP0_TCSTATUS
andi
t2
,
t2
,
TCSTATUS_IXMT
andi
t2
,
t2
,
TCSTATUS_IXMT
ehb
_
ehb
DMT
8
#
dmt
t0
DMT
8
#
dmt
t0
move
t1
,
ra
move
t1
,
ra
jal
mips_ihb
jal
mips_ihb
...
@@ -109,7 +109,7 @@
...
@@ -109,7 +109,7 @@
or
a2
,
t1
or
a2
,
t1
mtc0
a2
,
CP0_STATUS
mtc0
a2
,
CP0_STATUS
#ifdef CONFIG_MIPS_MT_SMTC
#ifdef CONFIG_MIPS_MT_SMTC
ehb
_
ehb
andi
t0
,
t0
,
VPECONTROL_TE
andi
t0
,
t0
,
VPECONTROL_TE
beqz
t0
,
1
f
beqz
t0
,
1
f
emt
emt
...
@@ -118,7 +118,7 @@
...
@@ -118,7 +118,7 @@
xori
t1
,
t1
,
TCSTATUS_IXMT
xori
t1
,
t1
,
TCSTATUS_IXMT
or
t1
,
t1
,
t2
or
t1
,
t1
,
t2
mtc0
t1
,
CP0_TCSTATUS
mtc0
t1
,
CP0_TCSTATUS
ehb
_
ehb
#endif /* CONFIG_MIPS_MT_SMTC */
#endif /* CONFIG_MIPS_MT_SMTC */
move
v0
,
a0
move
v0
,
a0
jr
ra
jr
ra
...
...
arch/mips/kernel/smtc-asm.S
View file @
4277ff5e
...
@@ -52,12 +52,12 @@ FEXPORT(__smtc_ipi_vector)
...
@@ -52,12 +52,12 @@ FEXPORT(__smtc_ipi_vector)
.
set
noat
.
set
noat
/
*
Disable
thread
scheduling
to
make
Status
update
atomic
*/
/
*
Disable
thread
scheduling
to
make
Status
update
atomic
*/
DMT
27
#
dmt
k1
DMT
27
#
dmt
k1
ehb
_
ehb
/
*
Set
EXL
*/
/
*
Set
EXL
*/
mfc0
k0
,
CP0_STATUS
mfc0
k0
,
CP0_STATUS
ori
k0
,
k0
,
ST0_EXL
ori
k0
,
k0
,
ST0_EXL
mtc0
k0
,
CP0_STATUS
mtc0
k0
,
CP0_STATUS
ehb
_
ehb
/
*
Thread
scheduling
now
inhibited
by
EXL
.
Restore
TE
state
.
*/
/
*
Thread
scheduling
now
inhibited
by
EXL
.
Restore
TE
state
.
*/
andi
k1
,
k1
,
VPECONTROL_TE
andi
k1
,
k1
,
VPECONTROL_TE
beqz
k1
,
1
f
beqz
k1
,
1
f
...
@@ -82,7 +82,7 @@ FEXPORT(__smtc_ipi_vector)
...
@@ -82,7 +82,7 @@ FEXPORT(__smtc_ipi_vector)
li
k1
,
ST0_CU0
li
k1
,
ST0_CU0
or
k1
,
k1
,
k0
or
k1
,
k1
,
k0
mtc0
k1
,
CP0_STATUS
mtc0
k1
,
CP0_STATUS
ehb
_
ehb
get_saved_sp
get_saved_sp
/
*
Interrupting
TC
will
have
pre
-
set
values
in
slots
in
the
new
frame
*/
/
*
Interrupting
TC
will
have
pre
-
set
values
in
slots
in
the
new
frame
*/
2
:
subu
k1
,
k1
,
PT_SIZE
2
:
subu
k1
,
k1
,
PT_SIZE
...
@@ -90,7 +90,7 @@ FEXPORT(__smtc_ipi_vector)
...
@@ -90,7 +90,7 @@ FEXPORT(__smtc_ipi_vector)
lw
k0
,
PT_TCSTATUS
(
k1
)
lw
k0
,
PT_TCSTATUS
(
k1
)
/
*
Write
it
to
TCStatus
to
restore
CU
/
KSU
/
IXMT
state
*/
/
*
Write
it
to
TCStatus
to
restore
CU
/
KSU
/
IXMT
state
*/
mtc0
k0
,
$
2
,
1
mtc0
k0
,
$
2
,
1
ehb
_
ehb
lw
k0
,
PT_EPC
(
k1
)
lw
k0
,
PT_EPC
(
k1
)
mtc0
k0
,
CP0_EPC
mtc0
k0
,
CP0_EPC
/
*
Save
all
will
redundantly
recompute
the
SP
,
but
use
it
for
now
*/
/
*
Save
all
will
redundantly
recompute
the
SP
,
but
use
it
for
now
*/
...
@@ -116,7 +116,7 @@ LEAF(self_ipi)
...
@@ -116,7 +116,7 @@ LEAF(self_ipi)
mfc0
t0
,
CP0_TCSTATUS
mfc0
t0
,
CP0_TCSTATUS
ori
t1
,
t0
,
TCSTATUS_IXMT
ori
t1
,
t0
,
TCSTATUS_IXMT
mtc0
t1
,
CP0_TCSTATUS
mtc0
t1
,
CP0_TCSTATUS
ehb
_
ehb
/
*
We
know
we
're in kernel mode, so prepare stack frame */
/
*
We
know
we
're in kernel mode, so prepare stack frame */
subu
t1
,
sp
,
PT_SIZE
subu
t1
,
sp
,
PT_SIZE
sw
ra
,
PT_EPC
(
t1
)
sw
ra
,
PT_EPC
(
t1
)
...
...
include/asm-mips/asmmacro.h
View file @
4277ff5e
...
@@ -26,14 +26,14 @@
...
@@ -26,14 +26,14 @@
ori
\
reg
,
\
reg
,
TCSTATUS_IXMT
ori
\
reg
,
\
reg
,
TCSTATUS_IXMT
xori
\
reg
,
\
reg
,
TCSTATUS_IXMT
xori
\
reg
,
\
reg
,
TCSTATUS_IXMT
mtc0
\
reg
,
CP0_TCSTATUS
mtc0
\
reg
,
CP0_TCSTATUS
ehb
_
ehb
.
endm
.
endm
.
macro
local_irq_disable
reg
=
t0
.
macro
local_irq_disable
reg
=
t0
mfc0
\
reg
,
CP0_TCSTATUS
mfc0
\
reg
,
CP0_TCSTATUS
ori
\
reg
,
\
reg
,
TCSTATUS_IXMT
ori
\
reg
,
\
reg
,
TCSTATUS_IXMT
mtc0
\
reg
,
CP0_TCSTATUS
mtc0
\
reg
,
CP0_TCSTATUS
ehb
_
ehb
.
endm
.
endm
#else
#else
.
macro
local_irq_enable
reg
=
t0
.
macro
local_irq_enable
reg
=
t0
...
...
include/asm-mips/mipsregs.h
View file @
4277ff5e
...
@@ -1459,7 +1459,8 @@ static inline void __emt(unsigned int previous)
...
@@ -1459,7 +1459,8 @@ static inline void __emt(unsigned int previous)
static
inline
void
__ehb
(
void
)
static
inline
void
__ehb
(
void
)
{
{
__asm__
__volatile__
(
__asm__
__volatile__
(
" ehb
\n
"
);
" .set mips32r2
\n
"
" ehb
\n
"
" .set mips0
\n
"
);
}
}
/*
/*
...
...
include/asm-mips/stackframe.h
View file @
4277ff5e
...
@@ -304,7 +304,7 @@
...
@@ -304,7 +304,7 @@
mfc0
v0
,
CP0_TCSTATUS
mfc0
v0
,
CP0_TCSTATUS
ori
v0
,
TCSTATUS_IXMT
ori
v0
,
TCSTATUS_IXMT
mtc0
v0
,
CP0_TCSTATUS
mtc0
v0
,
CP0_TCSTATUS
ehb
_
ehb
DMT
5
#
dmt
a1
DMT
5
#
dmt
a1
jal
mips_ihb
jal
mips_ihb
#endif
/* CONFIG_MIPS_MT_SMTC */
#endif
/* CONFIG_MIPS_MT_SMTC */
...
@@ -325,14 +325,14 @@
...
@@ -325,14 +325,14 @@
* restore TCStatus.IXMT.
* restore TCStatus.IXMT.
*/
*/
LONG_L
v1
,
PT_TCSTATUS
(
sp
)
LONG_L
v1
,
PT_TCSTATUS
(
sp
)
ehb
_
ehb
mfc0
v0
,
CP0_TCSTATUS
mfc0
v0
,
CP0_TCSTATUS
andi
v1
,
TCSTATUS_IXMT
andi
v1
,
TCSTATUS_IXMT
/* We know that TCStatua.IXMT should be set from above */
/* We know that TCStatua.IXMT should be set from above */
xori
v0
,
v0
,
TCSTATUS_IXMT
xori
v0
,
v0
,
TCSTATUS_IXMT
or
v0
,
v0
,
v1
or
v0
,
v0
,
v1
mtc0
v0
,
CP0_TCSTATUS
mtc0
v0
,
CP0_TCSTATUS
ehb
_
ehb
andi
a1
,
a1
,
VPECONTROL_TE
andi
a1
,
a1
,
VPECONTROL_TE
beqz
a1
,
1
f
beqz
a1
,
1
f
emt
emt
...
@@ -411,7 +411,7 @@
...
@@ -411,7 +411,7 @@
/* Clear TKSU, leave IXMT */
/* Clear TKSU, leave IXMT */
xori
t0
,
0x00001800
xori
t0
,
0x00001800
mtc0
t0
,
CP0_TCSTATUS
mtc0
t0
,
CP0_TCSTATUS
ehb
_
ehb
/* We need to leave the global IE bit set, but clear EXL...*/
/* We need to leave the global IE bit set, but clear EXL...*/
mfc0
t0
,
CP0_STATUS
mfc0
t0
,
CP0_STATUS
ori
t0
,
ST0_EXL
|
ST0_ERL
ori
t0
,
ST0_EXL
|
ST0_ERL
...
@@ -438,7 +438,7 @@
...
@@ -438,7 +438,7 @@
* and enable interrupts only for the
* and enable interrupts only for the
* current TC, using the TCStatus register.
* current TC, using the TCStatus register.
*/
*/
ehb
_
ehb
mfc0
t0
,
CP0_TCSTATUS
mfc0
t0
,
CP0_TCSTATUS
/* Fortunately CU 0 is in the same place in both registers */
/* Fortunately CU 0 is in the same place in both registers */
/* Set TCU0, TKSU (for later inversion) and IXMT */
/* Set TCU0, TKSU (for later inversion) and IXMT */
...
@@ -447,7 +447,7 @@
...
@@ -447,7 +447,7 @@
/* Clear TKSU *and* IXMT */
/* Clear TKSU *and* IXMT */
xori
t0
,
0x00001c00
xori
t0
,
0x00001c00
mtc0
t0
,
CP0_TCSTATUS
mtc0
t0
,
CP0_TCSTATUS
ehb
_
ehb
/* We need to leave the global IE bit set, but clear EXL...*/
/* We need to leave the global IE bit set, but clear EXL...*/
mfc0
t0
,
CP0_STATUS
mfc0
t0
,
CP0_STATUS
ori
t0
,
ST0_EXL
ori
t0
,
ST0_EXL
...
@@ -479,7 +479,7 @@
...
@@ -479,7 +479,7 @@
andi
v1
,
v0
,
TCSTATUS_IXMT
andi
v1
,
v0
,
TCSTATUS_IXMT
ori
v0
,
TCSTATUS_IXMT
ori
v0
,
TCSTATUS_IXMT
mtc0
v0
,
CP0_TCSTATUS
mtc0
v0
,
CP0_TCSTATUS
ehb
_
ehb
DMT
2
#
dmt
v0
DMT
2
#
dmt
v0
/*
/*
* We don't know a priori if ra is "live"
* We don't know a priori if ra is "live"
...
@@ -495,7 +495,7 @@
...
@@ -495,7 +495,7 @@
xori
t0
,
0x1e
xori
t0
,
0x1e
mtc0
t0
,
CP0_STATUS
mtc0
t0
,
CP0_STATUS
#ifdef CONFIG_MIPS_MT_SMTC
#ifdef CONFIG_MIPS_MT_SMTC
ehb
_
ehb
andi
v0
,
v0
,
VPECONTROL_TE
andi
v0
,
v0
,
VPECONTROL_TE
beqz
v0
,
2
f
beqz
v0
,
2
f
nop
/* delay slot */
nop
/* delay slot */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment