Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Apr 2000 10:43:17 -0700
From:      "Jeremiah Gowdy" <jgowdy@home.com>
To:        "Steve Passe" <smp@csn.net>, "James Housley" <jim@thehousleys.net>
Cc:        <freebsd-smp@FreeBSD.ORG>
Subject:   Re: hlt instructions and temperature issues 
Message-ID:  <001d01bfb070$12236b00$5a5d0418@vista1.sdca.home.com>
References:  <200004271609.KAA24711@Ilsa.StevesCafe.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In this piece of code:
------------------------------------
ENTRY(default_halt)
sti
#ifndef SMP
hlt                                     /* XXX:  until a wakeup IPI */
#ifdef SMP
#ifdef CHEAP_TPR
movl    $0, lapic_tpr
#else
andl    $~APIC_TPR_PRIO, lapic_tpr
#endif /** CHEAP_TPR */
#endif
hlt
ret
------------------------------------
Seems to me, if SMP is not defined, hlt gets executed twice.  In other
words:

ENTRY(default_halt)
sti
#ifndef SMP
hlt                                     /* XXX:  until a wakeup IPI */
hlt
ret

Is this not the case ?  Am I missing something in the behavior of hlt ?
Does it return to the next line of code EIP is pointing to after it recieves
an INT and wakes up ?  If that's the case, it seems this code would break
the nonSMP version (it would take two INTs to wake, because the next
instruction after the first wake would be another hlt.

If I'm way off base so be it.  I just thought maybe I'd point that out, and
if I'm wrong, learn something :)




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?001d01bfb070$12236b00$5a5d0418>