FVCool に関する注意、 2006年4月6日。  スケジューリングのやり方が FreeBSD ver.5.xx では変更されましたので、 KT133/A チップセットに対する FreeBSD ver.4.xx用の ver.1.04での説明は もはや当てはまりません。あまり確信はないですが、以下のような変更で なんとか動くようです。変更する関数は cpu_idle_default(), cpu_idle() でソースファイルは /usr/src/sys/i386/i386/machdep.c ------------------------------------------------------------------ だだし、0xAAAA は FVCool が -v -e オプション付で起動された時に 教えてくれる PLVL_2 レジスターアドレスです。 ------------------------------------------------------------------ static void cpu_idle_default(void) { /* * added for idle-hlt for 82C686 */ __asm __volatile("movl $0xE414,%edx"); __asm __volatile("inb %dx,%al"); /* * end of addition */ /* * we must absolutely guarentee that hlt is the * absolute next instruction after sti or we * introduce a timing window. */ __asm __volatile("sti; hlt"); } void cpu_idle(void) { #ifdef SMP if (mp_grab_cpu_hlt()) return; #endif if (cpu_idle_hlt) { /* * added for idle-hlt for 82C686 */ __asm __volatile("movl $0xE414,%edx"); __asm __volatile("inb %dx,%al"); /* * end of addition */ disable_intr(); if (sched_runnable()) enable_intr(); else (*cpu_idle_hook)(); /* * added for idle-hlt for 82C686 */ __asm __volatile("movl $0xE414,%edx"); __asm __volatile("inb %dx,%al"); /* * end of addition */ } } ------------------------------------------------------------------