Rev 540 | Rev 566 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 540 | Rev 548 | ||
|---|---|---|---|
| Line 41... | Line 41... | ||
| 41 | { |
41 | { |
| 42 | __address dba; |
42 | __address dba; |
| 43 | __address cur; |
43 | __address cur; |
| 44 | 44 | ||
| 45 | if (config.cpu_active == 1) { |
45 | if (config.cpu_active == 1) { |
| 46 | dba = frame_alloc(FRAME_KA | FRAME_PANIC, 0); |
46 | dba = frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME); |
| 47 | memsetb(dba, PAGE_SIZE, 0); |
47 | memsetb(dba, PAGE_SIZE, 0); |
| 48 | 48 | ||
| 49 | bootstrap_dba = dba; |
49 | bootstrap_dba = dba; |
| 50 | 50 | ||
| 51 | /* |
51 | /* |
| Line 64... | Line 64... | ||
| 64 | * virtual address space. Because of that, each AP copies |
64 | * virtual address space. Because of that, each AP copies |
| 65 | * already-initialized paging information from the bootstrap |
65 | * already-initialized paging information from the bootstrap |
| 66 | * processor and adjusts it to fulfill its needs. |
66 | * processor and adjusts it to fulfill its needs. |
| 67 | */ |
67 | */ |
| 68 | 68 | ||
| 69 | dba = frame_alloc(FRAME_KA | FRAME_PANIC, 0); |
69 | dba = frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME); |
| 70 | memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE); |
70 | memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE); |
| 71 | write_cr3(KA2PA(dba)); |
71 | write_cr3(KA2PA(dba)); |
| 72 | } |
72 | } |
| 73 | } |
73 | } |