From: <mar...@us...> - 2007-05-31 23:17:51
|
Revision: 1016 http://svn.sourceforge.net/hackndev/?rev=1016&view=rev Author: marex_z71 Date: 2007-05-31 16:17:48 -0700 (Thu, 31 May 2007) Log Message: ----------- Cocoboot: Fix booting on PalmT3 ... finally ... burn in hell bloody fscking bfugarux :D ... YEAH! ... One Cocoboot to rule then all! Modified Paths: -------------- cocoboot/trunk/arm/boot.c Modified: cocoboot/trunk/arm/boot.c =================================================================== --- cocoboot/trunk/arm/boot.c 2007-05-30 14:39:41 UTC (rev 1015) +++ cocoboot/trunk/arm/boot.c 2007-05-31 23:17:48 UTC (rev 1016) @@ -21,16 +21,20 @@ #include "regs.h" #include "cpu.h" +#define MACH_TYPE_T3XSCALE 829 + #ifdef TREO650 -#define KERNEL_OFFSET 0x0800000 -#define TAG_OFFSET 0x100 -#define INITRD_OFFSET 0x1500000 +#define KERNEL_OFFSET 0x0800000 +#define TAG_OFFSET 0x100 +#define INITRD_OFFSET 0x1500000 #else -#define KERNEL_OFFSET 0x8000 -#define TAG_OFFSET 0x100 -#define INITRD_OFFSET 0x0400000 +#define KERNEL_OFFSET 0x8000 +#define TAG_OFFSET 0x100 +#define INITRD_OFFSET 0x0400000 #endif +#define T3_KERNEL_OFFSET 0x0800000 +#define T3_INITRD_OFFSET 0x1500000 static void jump_to_kernel(UInt32 kernel_base, UInt32 tag_base, UInt32 mach) { @@ -88,6 +92,8 @@ if(!kernel || !cmdline) { return 0xc0ffee; } + UInt32 kernel_offset; + UInt32 initrd_offset; /* since we're going to turn off the MMU, we need to translate * all out pointers to physical addresses. @@ -191,20 +197,28 @@ } #endif + if (pg->mach_num==MACH_TYPE_T3XSCALE){ + kernel_offset=T3_KERNEL_OFFSET; + initrd_offset=T3_INITRD_OFFSET; + } else { + kernel_offset=KERNEL_OFFSET; + initrd_offset=INITRD_OFFSET; + } + /* place kernel parameters in memory */ setup_atags(pg->ram_base + TAG_OFFSET, pg->ram_base, pg->ram_size, cmdline, - pg->ram_base + INITRD_OFFSET, initrd_size); + pg->ram_base + initrd_offset, initrd_size); /* copy kernel into place */ - copy_image((void*)(pg->ram_base + KERNEL_OFFSET), kernel, kernel_size); + copy_image((void*)(pg->ram_base + kernel_offset), kernel, kernel_size); /* copy initrd into place */ if (initrd) { - copy_image((void*)(pg->ram_base + INITRD_OFFSET), initrd, initrd_size); + copy_image((void*)(pg->ram_base + initrd_offset), initrd, initrd_size); } /* bring on the penguin! */ - jump_to_kernel(pg->ram_base + KERNEL_OFFSET, pg->ram_base + TAG_OFFSET, pg->mach_num); + jump_to_kernel(pg->ram_base + kernel_offset, pg->ram_base + TAG_OFFSET, pg->mach_num); return 0xe4; /* sadly, this return will never be executed */ } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |