Changeset 2eb893b in mainline
- Timestamp:
- 2008-11-22T16:52:33Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 13964ef
- Parents:
- 48eb7a14
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified boot/arch/ia64/loader/gefi/HelenOS/hello.c ¶
r48eb7a14 r2eb893b 6 6 #define KERNEL_LOAD_ADDRESS 0x4400000 7 7 8 #define MEM_MAP_DESCRIPTOR_OFFSET_TYPE 0 9 #define MEM_MAP_DESCRIPTOR_OFFSET_BASE 8 10 #define MEM_MAP_DESCRIPTOR_OFFSET_PAGES 24 11 12 13 8 14 //Link image as a data array into hello - usefull with network boot 9 //#define IMAGE_LINKED15 #define IMAGE_LINKED 10 16 11 17 bootinfo_t *bootinfo=(bootinfo_t *)BOOTINFO_ADDRESS; … … 178 184 179 185 180 intwakeup_intno;181 wakeup_intno=0xf0;186 UINT64 wakeup_intno; 187 LibGetSalWakeupVector(&wakeup_intno); 182 188 Print (L"WAKEUP INTNO:%X\n", wakeup_intno); 183 //bootinfo->wakeup_intno=wakeup_intno; 184 185 186 187 188 189 { 189 190 191 192 193 190 194 UINTN cookie; 191 195 void *p=(void *)KERNEL_LOAD_ADDRESS; … … 193 197 UINT32 desver; 194 198 EFI_STATUS status; 195 EFI_MEMORY_DESCRIPTOR emd[1024];196 199 197 200 198 mapsize=1024*sizeof(emd);199 201 200 202 status=BS->AllocatePages(AllocateAnyPages,EfiLoaderData,/*(HOSSize>>12)+1*/ 1,p); … … 207 209 } 208 210 209 status=BS->GetMemoryMap(&mapsize,emd,&cookie,&descsize,&desver); 210 if(EFI_ERROR(status)){ 211 Print(L"Error 1\n"); 212 return EFI_SUCCESS; 211 UINTN no_entryes; 212 void * mds; 213 mds=LibMemoryMap(&no_entryes,&cookie,&descsize,&desver); 214 215 for(i=0;i<no_entryes;i++) 216 { 217 218 unsigned int type=*((unsigned int *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_TYPE)); 219 unsigned long long base=*((unsigned long long *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_BASE)); 220 unsigned long long pages=*((unsigned long long *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_PAGES)); 221 Print(L"T:%02d %016llX %016llX\n",type,base,pages*EFI_PAGE_SIZE); 222 213 223 } 214 224 status=BS->ExitBootServices(image,cookie); … … 218 228 } 219 229 220 }230 221 231 int a; 222 232 … … 228 238 bootinfo->sys_freq=sys_freq; 229 239 bootinfo->freq_scale=freq_scale; 240 241 242 bootinfo->memmap_items=0; 243 244 for(i=0;i<no_entryes;i++) 245 { 246 247 unsigned int type=*((unsigned int *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_TYPE)); 248 unsigned long long base=*((unsigned long long *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_BASE)); 249 unsigned long long pages=*((unsigned long long *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_PAGES)); 250 251 252 253 switch (type) 254 { 255 case EfiConventionalMemory: 256 bootinfo->memmap[bootinfo->memmap_items].type=EFI_MEMMAP_FREE_MEM; 257 bootinfo->memmap[bootinfo->memmap_items].base=base; 258 bootinfo->memmap[bootinfo->memmap_items].size=pages*EFI_PAGE_SIZE; 259 bootinfo->memmap_items++; 260 break; 261 case EfiMemoryMappedIO: 262 bootinfo->memmap[bootinfo->memmap_items].type=EFI_MEMMAP_IO; 263 bootinfo->memmap[bootinfo->memmap_items].base=base; 264 bootinfo->memmap[bootinfo->memmap_items].size=pages*EFI_PAGE_SIZE; 265 bootinfo->memmap_items++; 266 break; 267 case EfiMemoryMappedIOPortSpace: 268 bootinfo->memmap[bootinfo->memmap_items].type=EFI_MEMMAP_IO_PORTS; 269 bootinfo->memmap[bootinfo->memmap_items].base=base; 270 bootinfo->memmap[bootinfo->memmap_items].size=pages*EFI_PAGE_SIZE; 271 bootinfo->memmap_items++; 272 break; 273 274 default : 275 break; 276 } 277 278 279 280 281 282 } 283 284 230 285 231 286 //Run Kernel -
TabularUnified kernel/arch/ia64/include/bootinfo.h ¶
r48eb7a14 r2eb893b 34 34 #define CONFIG_INIT_TASKS 32 35 35 36 #define MEMMAP_ITEMS 128 37 38 #define EFI_MEMMAP_FREE_MEM 0 39 #define EFI_MEMMAP_IO 1 40 #define EFI_MEMMAP_IO_PORTS 2 41 42 36 43 typedef struct { 37 44 void *addr; … … 44 51 } binit_t; 45 52 53 typedef struct { 54 unsigned int type; 55 unsigned long base; 56 unsigned long size; 57 }efi_memmap_item_t; 58 46 59 47 60 typedef struct { 48 61 binit_t taskmap; 62 63 efi_memmap_item_t memmap[MEMMAP_ITEMS]; 64 unsigned int memmap_items; 49 65 50 66 unsigned long * sapic; -
TabularUnified kernel/arch/ia64/src/mm/frame.c ¶
r48eb7a14 r2eb893b 37 37 #include <config.h> 38 38 #include <panic.h> 39 #include <arch/bootinfo.h> 40 #include <align.h> 41 #include <macros.h> 39 42 40 43 /* … … 42 45 * for real ia64 systems that provide memory map. 43 46 */ 44 #define MEMORY_SIZE ( 64* 1024 * 1024)47 #define MEMORY_SIZE (256 * 1024 * 1024) 45 48 #define MEMORY_BASE (0 * 64 * 1024 * 1024) 49 50 #define KERNEL_RESERVED_AREA_BASE (0x4400000) 51 #define KERNEL_RESERVED_AREA_SIZE (16*1024*1024) 46 52 47 53 #define ONE_TO_ONE_MAPPING_SIZE (256*1048576) // Mapped at start … … 51 57 void poke_char(int x,int y,char ch, char c); 52 58 59 #define MIN_ZONE_SIZE (64*1024) 60 53 61 uintptr_t last_frame; 62 #define MINCONF 1 54 63 55 64 void frame_arch_init(void) 56 65 { 57 66 58 if(config.cpu_active==1) 59 { 60 zone_create(MEMORY_BASE >> FRAME_WIDTH, SIZE2FRAMES(MEMORY_SIZE), (MEMORY_SIZE) >> FRAME_WIDTH, 0); 67 if(config.cpu_active==1){ 68 69 70 71 unsigned int i; 72 for(i=0;i<bootinfo->memmap_items;i++){ 73 if (bootinfo->memmap[i].type==EFI_MEMMAP_FREE_MEM){ 74 uint64_t base=bootinfo->memmap[i].base; 75 uint64_t size=bootinfo->memmap[i].size; 76 uint64_t abase=ALIGN_UP(base,FRAME_SIZE); 77 if(size>FRAME_SIZE) size -=abase-base; 78 79 80 if(size>MIN_ZONE_SIZE) { 81 zone_create(abase >> FRAME_WIDTH, (size) >> FRAME_WIDTH, max(MINCONF,((abase) >> FRAME_WIDTH)), 0); 82 } 83 } 84 } 85 86 //zone_create(MEMORY_BASE >> FRAME_WIDTH, SIZE2FRAMES(MEMORY_SIZE), (MEMORY_SIZE) >> FRAME_WIDTH, 0); 61 87 62 88 /* 63 89 * Blacklist ROM regions. 64 90 */ 65 //frame_mark_unavailable(ADDR2PFN(ROM_BASE), SIZE2FRAMES(ROM_SIZE));91 frame_mark_unavailable(ADDR2PFN(ROM_BASE), SIZE2FRAMES(ROM_SIZE)); 66 92 67 frame_mark_unavailable(ADDR2PFN(0), SIZE2FRAMES(1048576)); 68 last_frame=SIZE2FRAMES((VRN_KERNEL<<VRN_SHIFT)+ONE_TO_ONE_MAPPING_SIZE); 93 frame_mark_unavailable(ADDR2PFN(KERNEL_RESERVED_AREA_BASE), SIZE2FRAMES(KERNEL_RESERVED_AREA_SIZE)); 69 94 } 70 95 }
Note:
See TracChangeset
for help on using the changeset viewer.