Changeset db3341e in mainline for arch/amd64/src/mm/page.c
- Timestamp:
- 2005-09-01T14:28:00Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 623ba26c
- Parents:
- 1dde3b61
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/amd64/src/mm/page.c
r1dde3b61 rdb3341e 28 28 29 29 #include <mm/page.h> 30 #include <mm/frame.h> 30 31 #include <arch/mm/page.h> 32 #include <arch/interrupt.h> 33 #include <arch/asm.h> 34 #include <config.h> 35 36 #include <memstr.h> 37 38 39 __address bootstrap_dba; 31 40 32 41 void page_arch_init(void) 33 42 { 43 __address dba; 44 count_t i; 45 46 if (config.cpu_active == 1) { 47 dba = frame_alloc(FRAME_KA | FRAME_PANIC); 48 memsetb(dba, PAGE_SIZE, 0); 49 50 bootstrap_dba = dba; 51 52 /* 53 * Identity mapping for all frames. 54 * PA2KA(identity) mapping for all frames. 55 */ 56 for (i = 0; i < frames; i++) { 57 map_page_to_frame(i * PAGE_SIZE, i * PAGE_SIZE, PAGE_CACHEABLE | PAGE_EXEC, KA2PA(dba)); 58 map_page_to_frame(PA2KA(i * PAGE_SIZE), i * PAGE_SIZE, PAGE_CACHEABLE | PAGE_EXEC, KA2PA(dba)); 59 } 60 61 trap_register(14, page_fault); 62 write_cr3(KA2PA(dba)); 63 } 64 else { 65 /* 66 * Application processors need to create their own view of the 67 * virtual address space. Because of that, each AP copies 68 * already-initialized paging information from the bootstrap 69 * processor and adjusts it to fulfill its needs. 70 */ 71 72 dba = frame_alloc(FRAME_KA | FRAME_PANIC); 73 memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE); 74 write_cr3(KA2PA(dba)); 75 } 34 76 }
Note:
See TracChangeset
for help on using the changeset viewer.