diff options
author | peter <peter@FreeBSD.org> | 1997-09-05 17:54:07 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1997-09-05 17:54:07 +0000 |
commit | 494026a5bc94d5cc525f7f8706cfeb565c00c90c (patch) | |
tree | feb145906f113bb46c470790c24241a02d07b72c /sys/amd64 | |
parent | 088ca8113e7be1fdd188cbf121f3938e2f9bb30a (diff) | |
download | FreeBSD-src-494026a5bc94d5cc525f7f8706cfeb565c00c90c.zip FreeBSD-src-494026a5bc94d5cc525f7f8706cfeb565c00c90c.tar.gz |
Argh, what was I thinking?? Don't (yet) halt the CPU in the idle loop
while waiting for an interrupt (rather than spinning on the runqueue status
bits), since the other cpu can put stuff in there and the sleeping cpu may
not get an interrupt for a while. When we have a reschedule IPI, this can
come back.
Pointed out by: fsmp
Diffstat (limited to 'sys/amd64')
-rw-r--r-- | sys/amd64/amd64/cpu_switch.S | 4 | ||||
-rw-r--r-- | sys/amd64/amd64/swtch.s | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/amd64/amd64/cpu_switch.S b/sys/amd64/amd64/cpu_switch.S index f749f03..c21ea8c 100644 --- a/sys/amd64/amd64/cpu_switch.S +++ b/sys/amd64/amd64/cpu_switch.S @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: swtch.s,v 1.59 1997/08/09 00:02:47 dyson Exp $ + * $Id: swtch.s,v 1.60 1997/08/26 18:10:33 peter Exp $ */ #include "npx.h" @@ -384,7 +384,9 @@ idle_loop: CROSSJUMPTARGET(_idle) ENTRY(default_halt) +#ifndef SMP /* until we have a wakeup IPI */ hlt +#endif ret /* diff --git a/sys/amd64/amd64/swtch.s b/sys/amd64/amd64/swtch.s index f749f03..c21ea8c 100644 --- a/sys/amd64/amd64/swtch.s +++ b/sys/amd64/amd64/swtch.s @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: swtch.s,v 1.59 1997/08/09 00:02:47 dyson Exp $ + * $Id: swtch.s,v 1.60 1997/08/26 18:10:33 peter Exp $ */ #include "npx.h" @@ -384,7 +384,9 @@ idle_loop: CROSSJUMPTARGET(_idle) ENTRY(default_halt) +#ifndef SMP /* until we have a wakeup IPI */ hlt +#endif ret /* |