- Timestamp:
- 2006-02-08T12:34:05Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5e3757d
- Parents:
- eb1b8b6
- Location:
- arch
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/amd64/include/types.h
reb1b8b6 r085d973 40 40 41 41 typedef __u64 __address; 42 typedef __u64 pfn_t; 42 43 43 44 /* Flags of processor (return value of interrupts_disable()) */ -
arch/amd64/src/mm/page.c
reb1b8b6 r085d973 45 45 if (config.cpu_active == 1) { 46 46 page_mapping_operations = &pt_mapping_operations; 47 47 48 48 /* 49 49 * PA2KA(identity) mapping for all frames. … … 52 52 page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, PAGE_CACHEABLE | PAGE_EXEC); 53 53 } 54 55 54 exc_register(14, "page_fault", (iroutine)page_fault); 56 55 write_cr3((__address) AS_KERNEL->page_table); -
arch/amd64/src/pm.c
reb1b8b6 r085d973 38 38 39 39 #include <memstr.h> 40 #include <mm/ heap.h>40 #include <mm/slab.h> 41 41 #include <debug.h> 42 42 -
arch/ia32/include/types.h
reb1b8b6 r085d973 40 40 41 41 typedef __u32 __address; 42 typedef __u32 pfn_t; 42 43 43 44 typedef __u32 ipl_t; -
arch/ia32/src/mm/frame.c
reb1b8b6 r085d973 36 36 #include <debug.h> 37 37 #include <align.h> 38 #include <macros.h> 39 40 #include <print.h> 41 #include <console/cmd.h> 42 #include <console/kconsole.h> 43 38 44 39 45 size_t hardcoded_unmapped_ktext_size = 0; … … 42 48 __address last_frame = 0; 43 49 50 static void init_e820_memory(pfn_t minconf) 51 { 52 int i; 53 pfn_t start, size,conf; 54 55 for (i = 0; i < e820counter; i++) { 56 if (e820table[i].type == MEMMAP_MEMORY_AVAILABLE) { 57 start = ADDR2PFN(ALIGN_UP(e820table[i].base_address, 58 FRAME_SIZE)); 59 size = SIZE2PFN(ALIGN_DOWN(e820table[i].size, 60 FRAME_SIZE)); 61 if (minconf < start || minconf >= start+size) 62 conf = start; 63 else 64 conf = minconf; 65 zone_create(start,size, conf, 0); 66 if (last_frame < ALIGN_UP(e820table[i].base_address + e820table[i].size, FRAME_SIZE)) 67 last_frame = ALIGN_UP(e820table[i].base_address + e820table[i].size, FRAME_SIZE); 68 } 69 } 70 } 71 72 static int cmd_e820mem(cmd_arg_t *argv); 73 static cmd_info_t e820_info = { 74 .name = "e820list", 75 .description = "List e820 memory.", 76 .func = cmd_e820mem, 77 .argc = 0 78 }; 79 80 static char *e820names[] = { "invalid", "available", "reserved", 81 "acpi", "nvs", "unusable" }; 82 83 84 static int cmd_e820mem(cmd_arg_t *argv) 85 { 86 int i; 87 char *name; 88 89 for (i = 0; i < e820counter; i++) { 90 if (e820table[i].type <= MEMMAP_MEMORY_UNUSABLE) 91 name = e820names[e820table[i].type]; 92 else 93 name = "invalid"; 94 printf("%P %dB %s\n", e820table[i].base_address, 95 e820table[i].size, 96 name); 97 } 98 return 0; 99 } 100 101 44 102 void frame_arch_init(void) 45 103 { 46 __u8 i;47 104 static pfn_t minconf; 105 48 106 if (config.cpu_active == 1) { 107 cmd_initialize(&e820_info); 108 cmd_register(&e820_info); 109 110 111 minconf = 1; 112 #ifdef CONFIG_SMP 113 minconf = max(minconf, 114 ADDR2PFN(AP_BOOT_OFFSET+hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size)); 115 #endif 116 #ifdef CONFIG_SIMICS_FIX 117 minconf = max(minconf, ADDR2PFN(0x10000)); 118 #endif 119 init_e820_memory(minconf); 49 120 50 121 /* Reserve frame 0 (BIOS data) */ 51 frame_ region_not_free(0, FRAME_SIZE);122 frame_mark_unavailable(0, 1); 52 123 53 124 #ifdef CONFIG_SMP 54 125 /* Reserve AP real mode bootstrap memory */ 55 frame_region_not_free(AP_BOOT_OFFSET, hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size); 126 frame_mark_unavailable(AP_BOOT_OFFSET >> FRAME_WIDTH, 127 (hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size) >> FRAME_WIDTH); 56 128 57 129 #ifdef CONFIG_SIMICS_FIX 58 130 /* Don't know why, but this addresses help */ 59 frame_region_not_free(0xf000,FRAME_SIZE); 60 frame_region_not_free(0xe000,FRAME_SIZE); 61 frame_region_not_free(0xd000,FRAME_SIZE); 131 frame_mark_unavailable(0xd000 >> FRAME_WIDTH,3); 62 132 #endif 63 133 #endif 64 65 for (i = 0; i < e820counter; i++) {66 if (e820table[i].type == MEMMAP_MEMORY_AVAILABLE) {67 zone_create_in_region(e820table[i].base_address, e820table[i].size & ~(FRAME_SIZE-1));68 if (last_frame < ALIGN_UP(e820table[i].base_address + e820table[i].size, FRAME_SIZE))69 last_frame = ALIGN_UP(e820table[i].base_address + e820table[i].size, FRAME_SIZE);70 }71 }72 134 } 73 135 } -
arch/ia32/src/pm.c
reb1b8b6 r085d973 36 36 #include <panic.h> 37 37 #include <arch/mm/page.h> 38 #include <mm/ heap.h>38 #include <mm/slab.h> 39 39 #include <memstr.h> 40 40 #include <arch/boot/boot.h> -
arch/ia32/src/smp/smp.c
reb1b8b6 r085d973 44 44 #include <mm/frame.h> 45 45 #include <mm/page.h> 46 #include <mm/ heap.h>46 #include <mm/slab.h> 47 47 #include <mm/as.h> 48 48 #include <print.h> -
arch/mips32/Makefile.inc
reb1b8b6 r085d973 74 74 KERNEL_LOAD_ADDRESS = 0x88002000 75 75 CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -march=r4600 76 INIT_ADDRESS = 0 77 INIT_SIZE = 0 76 78 endif 77 79 ifeq ($(MIPS_MACHINE),lgxemul) -
arch/mips32/include/types.h
reb1b8b6 r085d973 52 52 typedef union pte pte_t; 53 53 54 typedef __u32 pfn_t; 55 54 56 #endif -
arch/mips32/src/drivers/arc.c
reb1b8b6 r085d973 304 304 305 305 total += basesize; 306 zone_create_in_region(base, basesize); 306 307 zone_create(ADDR2PFN(base), 308 SIZE2PFN(ALIGN_DOWN(basesize,FRAME_SIZE)), 309 ADDR2PFN(base),0); 307 310 } 308 311 desc = arc_entry->getmemorydescriptor(desc); -
arch/mips32/src/mips32.c
reb1b8b6 r085d973 96 96 arc_print_memory_map(); 97 97 arc_print_devices(); 98 /* Setup usermode...*/ 99 // config.init_addr = INIT_ADDRESS; 100 // config.init_size = INIT_SIZE; 98 101 } 99 102 100 103 void arch_post_mm_init(void) 101 104 { 102 /* Setup usermode...*/103 config.init_addr = INIT_ADDRESS;104 config.init_size = INIT_SIZE;105 105 } 106 106 -
arch/mips32/src/mm/frame.c
reb1b8b6 r085d973 44 44 void frame_arch_init(void) 45 45 { 46 /* Blacklist first 4KB, exception vector */47 frame_region_not_free(0, FRAME_SIZE);48 49 46 if (arc_enabled()) 50 47 arc_frame_init(); 51 else 52 zone_create _in_region(KA2PA(KERNEL_LOAD_ADDRESS),53 (config.memory_size & ~(FRAME_SIZE-1)));48 else { 49 zone_create(1, (config.memory_size >> PAGE_WIDTH)-1,1,0); 50 } 54 51 }
Note:
See TracChangeset
for help on using the changeset viewer.