/SPARTAN/trunk/src/main/kinit.c |
86,7 → 86,8 |
* Now that all CPUs are up, we can report what we've found. |
*/ |
for (i = 0; i < config.cpu_count; i++) |
cpu_print_report(&cpus[i]); |
if (cpus[i].active) |
cpu_print_report(&cpus[i]); |
|
#ifdef __SMP__ |
if (config.cpu_count > 1) { |
/SPARTAN/trunk/arch/ia32/src/ia32.c |
44,7 → 44,22 |
|
#include <arch/interrupt.h> |
|
#include <arch/asm.h> |
|
void write_dr0(__u32 v) |
{ |
__asm__("movl %0,%%dr0" : : "r" (v)); |
} |
|
inline __u32 read_dr0(void) |
{ |
__u32 v; |
|
__asm__("movl %%dr0,%0\n" : "=r" (v)); |
|
return v; |
} |
|
void arch_pre_mm_init(void) |
{ |
pm_init(); |
/SPARTAN/trunk/arch/ia32/src/smp/mp.c |
494,7 → 494,7 |
continue; |
|
if (pr[i].l_apic_id == l_apic_id()) { |
printf("%X: bad processor entry #%d, will not send IPI to myself\n", &pr[i], i); |
printf("%L: bad processor entry #%d, will not send IPI to myself\n", &pr[i], i); |
continue; |
} |
|
/SPARTAN/trunk/arch/ia32/src/asm.s |
52,20 → 52,7 |
.global memsetb |
.global memsetw |
.global memcmp |
.global write_dr0 |
.global read_dr0 |
|
write_dr0: |
pushl %eax |
movl 8(%esp),%eax |
movl %eax,%dr0 |
popl %eax |
ret |
|
read_dr0: |
movl %dr0,%eax |
ret |
|
# |
# set priority level high |
cpu_priority_high: |