On Sun, Nov 25, 2007 at 01:02:25PM +0100, Martin Michlmayr wrote:
> How much work is 64 bit support?
It's not the 64bit support, things are simply not fitting into the
memory segment we use anymore:

Tip22 finds this memory map on my Indy:

1) Free Memory(3) segment found at (0x88002000,0x88740000)
2) Free Memory(3) segment found at (0x88800000,0x89002000)
3) Free Memory(3) segment found at (0x896f2000,0x94000000)

(1) is where the running kernel + initrd goes. (2) is where we tell the
prom to download the tftpboot image to and (3) is lots of free space.
The 64bit kernel (7MB) is just so much bigger than the 32bit one.

Attached is a hack to get things booting again (so installer testing can
proceed). It puts the tftp boot file into (3) and the initrd into (2) -
it succesfully boots a kernel with an initramfs on my R5K Indy. I'll
have to change some of the reservation code so we don't waste so much
ram before I can fix this for real though.
Cheers,
 -- Guido
diff --git a/common/subarch.h b/common/subarch.h
index eba5ef0..788cc8d 100644
--- a/common/subarch.h
+++ b/common/subarch.h
@@ -30,7 +30,7 @@ struct kernel_load_block {
 struct kernel_load_block kernel_load[] = {
 	{ /* IP22 */
 	.base =     0x88002000,
-	.reserved =   0x800000,
+	.reserved =  0x1700000,
 	},
 	{ /* IP32 */
 	.base     = 0x80004000,
diff --git a/common/version.h b/common/version.h
index c144648..cffbd51 100644
--- a/common/version.h
+++ b/common/version.h
@@ -1 +1 @@
-#define __ARCSBOOT_VERSION__ "0.3.8.8"
+#define __ARCSBOOT_VERSION__ "0.3.9"
diff --git a/tip22/tftpload.c b/tip22/tftpload.c
index 86bf111..37ca7d1 100644
--- a/tip22/tftpload.c
+++ b/tip22/tftpload.c
@@ -320,7 +320,12 @@ void _start(LONG argc, CHAR * argv[], CHAR * envp[])
 	kernel_entry = (void (*)(int, CHAR *[], CHAR *[]))CopyKernel(&kernel_end);
 
 	/* align to page boundary */
+#if (SUBARCH != IP22)
 	rd_vaddr = (char*)(((kernel_end + PAGE_SIZE) / PAGE_SIZE ) * PAGE_SIZE);
+#else
+	rd_vaddr = (char*)0x88800000;
+#endif
+
 	copyRamdisk( rd_vaddr, (char*)&__rd_start, rd_size);
 
 	/* tell the kernel about the ramdisk */

Reply via email to