2009-09-21から1日間の記事一覧

そして、process_mp_configuration()を見ていくと・・

void process_mp_configuration(void) { /* Scan MP table and find some information about MP configuration */ u32_t next; int cpu_count, bus_count, apic_count, ioint_count, lint_count; int i=mph.mpch_entry_count; u8_t this_entry; struct io_ap…

fpsを読めたら次はload_mph()でMP Configuration Table Headerを探す。

int load_mph(void) { /* Find and load a valid MP config header struct. Return noncero on success */ unsigned addr; phys_copy ( fps.fp_mp_table , vir2phys(&mph) , sizeof(mph) ); if (test_mptable_checksum()) return 1; ADDS_MP_STATUS("MP conf…

mp_start()を見ていく。関数についてるコメントからこいつは、MP Configuration tableを読み込んで、各cpuを起動させるということがわかる。

調べているのはここにあるソース。 http://gsd.unex.es/projects/minixsmp/ void mp_start() { /* Load MP configuraton and wake up each CPU in the system */ u32_t trampoline_addr; int cpu; /* Start messaging to console */ MP_STATUS[0]=0; ADDS_MP…