Index: kernel/arch/ppc32/_link.ld.in
===================================================================
--- kernel/arch/ppc32/_link.ld.in	(revision 1167520724b9b526c27b67f2d4bc447ef626240c)
+++ kernel/arch/ppc32/_link.ld.in	(revision 1167520724b9b526c27b67f2d4bc447ef626240c)
@@ -0,0 +1,59 @@
+/** PPC32 linker script
+ *
+ * umapped section:
+ * 	kernel text
+ * 	kernel data
+ * mapped section:
+ *	kernel text
+ *	kernel data 
+ *
+ */
+
+#define __ASM__
+#include <arch/boot/boot.h>
+#include <arch/mm/page.h>
+
+ENTRY(kernel_image_start)
+OUTPUT_FORMAT("elf32-powerpc")
+OUTPUT_ARCH("powerpc:common")
+
+SECTIONS {
+	.unmapped 0: AT (0) {
+		unmapped_ktext_start = .;
+		*(K_UNMAPPED_TEXT_START);
+		unmapped_ktext_end = .;
+		
+		unmapped_kdata_start = .;
+		*(K_UNMAPPED_DATA_START);
+		unmapped_kdata_start = .;
+	}
+	
+	.mapped PA2KA(BOOT_OFFSET): AT (BOOT_OFFSET) { 
+		ktext_start = .;
+		*(K_TEXT_START);
+		*(.text);
+		ktext_end = .;
+		
+		kdata_start = .;
+		*(K_DATA_START);
+		*(.rodata);
+		*(.rodata.*);
+		*(.data);		/* initialized data */
+		*(.sdata);
+		*(.sdata2);
+		*(.sbss);
+		hardcoded_ktext_size = .;
+		LONG(ktext_end - ktext_start);	
+		hardcoded_kdata_size = .;
+		LONG(kdata_end - kdata_start);
+		hardcoded_load_address = .;
+		LONG(PA2KA(BOOT_OFFSET));
+		*(.bss);		/* uninitialized static variables */	
+		*(COMMON); 		/* global variables */
+
+		symbol_table = .;
+		*(symtab.*);            /* Symbol table, must be LAST symbol!*/
+
+		kdata_end = .;
+	}
+}
