Index: boot/arch/ia64/loader/gefi/HelenOS/hello.c
===================================================================
--- boot/arch/ia64/loader/gefi/HelenOS/hello.c	(revision 1025d287b38dfbafd8f22c00a259f14af70cbab6)
+++ boot/arch/ia64/loader/gefi/HelenOS/hello.c	(revision 31696b4fbd84b5c8090a758e9a35ba49a9156b52)
@@ -6,6 +6,12 @@
 #define KERNEL_LOAD_ADDRESS 0x4400000
 
+#define MEM_MAP_DESCRIPTOR_OFFSET_TYPE 0	    
+#define MEM_MAP_DESCRIPTOR_OFFSET_BASE 8    
+#define MEM_MAP_DESCRIPTOR_OFFSET_PAGES	24    
+
+
+
 //Link image as a data array into hello - usefull with network boot
-//#define IMAGE_LINKED
+#define IMAGE_LINKED
 
 bootinfo_t *bootinfo=(bootinfo_t *)BOOTINFO_ADDRESS;
@@ -178,14 +184,12 @@
 
 
-        int wakeup_intno;
-        wakeup_intno=0xf0;
+        UINT64 wakeup_intno;
+		LibGetSalWakeupVector(&wakeup_intno);
         Print (L"WAKEUP INTNO:%X\n", wakeup_intno);
-	//bootinfo->wakeup_intno=wakeup_intno;
-
-
-
-
-
-	{
+
+
+
+
+
 	    UINTN cookie;
 	    void *p=(void *)KERNEL_LOAD_ADDRESS;
@@ -193,8 +197,6 @@
 	    UINT32 desver;
 	    EFI_STATUS status;
-	    EFI_MEMORY_DESCRIPTOR emd[1024];
 	    
 	        	    
-	    mapsize=1024*sizeof(emd);
 	    
 	    status=BS->AllocatePages(AllocateAnyPages,EfiLoaderData,/*(HOSSize>>12)+1*/ 1,p);
@@ -207,8 +209,16 @@
 	    }
 	    
-	    status=BS->GetMemoryMap(&mapsize,emd,&cookie,&descsize,&desver);
-	    if(EFI_ERROR(status)){
-		Print(L"Error 1\n");
-		return EFI_SUCCESS;
+	    UINTN no_entryes;
+	    void * mds;
+	    mds=LibMemoryMap(&no_entryes,&cookie,&descsize,&desver);
+	    
+	    for(i=0;i<no_entryes;i++)
+	    {
+	    
+	    	unsigned int type=*((unsigned int *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_TYPE));
+	    	unsigned long long base=*((unsigned long long *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_BASE));
+	    	unsigned long long pages=*((unsigned long long *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_PAGES));
+	    	Print(L"T:%02d %016llX %016llX\n",type,base,pages*EFI_PAGE_SIZE);
+		
 	    }
 	    status=BS->ExitBootServices(image,cookie);	
@@ -218,5 +228,5 @@
 	    }
 	    
-	}
+	
 	int a;
 	
@@ -228,4 +238,49 @@
 	bootinfo->sys_freq=sys_freq;
 	bootinfo->freq_scale=freq_scale;
+
+
+	    bootinfo->memmap_items=0;
+	    
+	    for(i=0;i<no_entryes;i++)
+	    {
+	    
+	    	unsigned int type=*((unsigned int *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_TYPE));
+	    	unsigned long long base=*((unsigned long long *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_BASE));
+	    	unsigned long long pages=*((unsigned long long *)(mds+i*descsize+MEM_MAP_DESCRIPTOR_OFFSET_PAGES));
+	    	
+	    	
+	    	
+	    	switch (type)
+	    	{
+	    		case EfiConventionalMemory:
+				bootinfo->memmap[bootinfo->memmap_items].type=EFI_MEMMAP_FREE_MEM;   	
+				bootinfo->memmap[bootinfo->memmap_items].base=base;   	
+				bootinfo->memmap[bootinfo->memmap_items].size=pages*EFI_PAGE_SIZE;   	
+	    			bootinfo->memmap_items++;
+	    			break;
+	    		case EfiMemoryMappedIO:
+				bootinfo->memmap[bootinfo->memmap_items].type=EFI_MEMMAP_IO;   	
+				bootinfo->memmap[bootinfo->memmap_items].base=base;   	
+				bootinfo->memmap[bootinfo->memmap_items].size=pages*EFI_PAGE_SIZE;   	
+	    			bootinfo->memmap_items++;
+	    			break;
+	    		case EfiMemoryMappedIOPortSpace:
+				bootinfo->memmap[bootinfo->memmap_items].type=EFI_MEMMAP_IO_PORTS;   	
+				bootinfo->memmap[bootinfo->memmap_items].base=base;   	
+				bootinfo->memmap[bootinfo->memmap_items].size=pages*EFI_PAGE_SIZE;   	
+	    			bootinfo->memmap_items++;
+	    			break;
+	    			
+	    		default :
+	    			break;
+	    	}
+	    	
+	    	
+	    	
+	    	
+
+	    }
+
+
 	
 	//Run Kernel
