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>