- Timestamp:
- 2008-11-22T16:52:33Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 13964ef
- Parents:
- 48eb7a14
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note:
See TracChangeset
for help on using the changeset viewer.