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
Kirill Smelkov
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