PERFORCE change 136238 for review
Randall R. Stewart
rrs at FreeBSD.org
Tue Feb 26 14:12:52 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=136238
Change 136238 by rrs at rrs-mips2-jnpr on 2008/02/26 14:12:37
Quick hack, disable int's while doing read64/write64 since
our 64 bit reg's get trashed by an interrupt.
Affected files ...
.. //depot/projects/mips2-jnpr/src/sys/mips/mips32/octeon32/octeon_pcmap_regs.h#5 edit
Differences ...
==== //depot/projects/mips2-jnpr/src/sys/mips/mips32/octeon32/octeon_pcmap_regs.h#5 (text+ko) ====
@@ -136,7 +136,6 @@
#else
-
/* ABI o32 */
@@ -153,7 +152,9 @@
uint32_t tmp1;
uint32_t tmp2;
uint32_t tmp3;
+ uint32_t rupt_state;
+ rupt_state = disableintr();
__asm __volatile(
".set mips64\n"
"dsll %0, %3, 32\n"
@@ -170,6 +171,9 @@
: "r"(valh), "r"(vall),
"r"(csr_addrh), "r"(csr_addrl)
);
+ if (rupt_state) {
+ enableintr();
+ }
}
static inline void
@@ -182,7 +186,9 @@
uint32_t tmp1;
uint32_t tmp2;
uint32_t tmp3;
+ uint32_t rupt_state;
+ rupt_state = disableintr();
__asm __volatile(
".set mips64\n"
"dsll %0, %3, 32\n"
@@ -199,6 +205,9 @@
: "r"(valh), "r"(vall),
"r"(csr_addrh), "r"(csr_addrl)
);
+ if (rupt_state) {
+ enableintr();
+ }
}
@@ -385,7 +394,9 @@
uint32_t csr_addrl = csr_addr;
uint32_t valh;
uint32_t vall;
+ uint32_t rupt_state;
+ rupt_state = disableintr();
__asm __volatile(
".set mips64\n"
"dsll %0, %2, 32\n"
@@ -400,7 +411,9 @@
: "=&r"(valh), "=&r"(vall)
: "r"(csr_addrh), "r"(csr_addrl)
);
-
+ if (rupt_state) {
+ enableintr();
+ }
return ((uint64_t) valh << 32) | vall;
}
More information about the p4-projects
mailing list