Index: kernel/arch/ppc32/Makefile.inc
===================================================================
--- kernel/arch/ppc32/Makefile.inc	(revision 566457ad2a776b2ac7fe206894a57dc9805ea7bc)
+++ kernel/arch/ppc32/Makefile.inc	(revision 8b6cd5cc7eb1fce2e87ead2a1403607213d545be)
@@ -27,7 +27,4 @@
 #
 
-BFD_NAME = elf32-powerpc
-BFD_ARCH = powerpc:common
-BFD = binary
 
 COMMON_CFLAGS += -mcpu=powerpc -msoft-float -m32
Index: kernel/arch/ppc32/_link.ld.in
===================================================================
--- kernel/arch/ppc32/_link.ld.in	(revision 566457ad2a776b2ac7fe206894a57dc9805ea7bc)
+++ kernel/arch/ppc32/_link.ld.in	(revision 8b6cd5cc7eb1fce2e87ead2a1403607213d545be)
@@ -20,5 +20,6 @@
 	kernel_load_address = PA2KA(0);
 
-	.unmapped 0: AT (0) {
+	.unmapped (SIZEOF_HEADERS): AT (SIZEOF_HEADERS) {
+		. = ALIGN(0x100);
 		*(K_UNMAPPED_TEXT_START);
 	}
@@ -46,3 +47,7 @@
 		kdata_end = .;
 	}
+
+	/DISCARD/ : {
+		*(*);
+	}
 }
Index: kernel/arch/ppc32/src/exception.S
===================================================================
--- kernel/arch/ppc32/src/exception.S	(revision 566457ad2a776b2ac7fe206894a57dc9805ea7bc)
+++ kernel/arch/ppc32/src/exception.S	(revision 8b6cd5cc7eb1fce2e87ead2a1403607213d545be)
@@ -126,5 +126,9 @@
 .endm
 
-.org 0x100
+// XXX: K_UNMAPPED_TEXT_START section starts at 0x100,
+// so all the following .org directives are relative to that.
+#define ABSOLUTE(x) ((x) - 0x100)
+
+.org ABSOLUTE(0x100)
 SYMBOL(exc_system_reset)
 	CONTEXT_STORE
@@ -133,5 +137,5 @@
 	b jump_to_kernel
 
-.org 0x200
+.org ABSOLUTE(0x200)
 SYMBOL(exc_machine_check)
 	CONTEXT_STORE
@@ -140,5 +144,5 @@
 	b jump_to_kernel
 
-.org 0x300
+.org ABSOLUTE(0x300)
 SYMBOL(exc_data_storage)
 	CONTEXT_STORE
@@ -147,5 +151,5 @@
 	b jump_to_kernel
 
-.org 0x400
+.org ABSOLUTE(0x400)
 SYMBOL(exc_instruction_storage)
 	CONTEXT_STORE
@@ -154,5 +158,5 @@
 	b jump_to_kernel
 
-.org 0x500
+.org ABSOLUTE(0x500)
 SYMBOL(exc_external)
 	CONTEXT_STORE
@@ -161,5 +165,5 @@
 	b jump_to_kernel
 
-.org 0x600
+.org ABSOLUTE(0x600)
 SYMBOL(exc_alignment)
 	CONTEXT_STORE
@@ -168,5 +172,5 @@
 	b jump_to_kernel
 
-.org 0x700
+.org ABSOLUTE(0x700)
 SYMBOL(exc_program)
 	CONTEXT_STORE
@@ -175,5 +179,5 @@
 	b jump_to_kernel
 
-.org 0x800
+.org ABSOLUTE(0x800)
 SYMBOL(exc_fp_unavailable)
 	CONTEXT_STORE
@@ -182,5 +186,5 @@
 	b jump_to_kernel
 
-.org 0x900
+.org ABSOLUTE(0x900)
 SYMBOL(exc_decrementer)
 	CONTEXT_STORE
@@ -189,5 +193,5 @@
 	b jump_to_kernel
 
-.org 0xa00
+.org ABSOLUTE(0xa00)
 SYMBOL(exc_reserved0)
 	CONTEXT_STORE
@@ -196,5 +200,5 @@
 	b jump_to_kernel
 
-.org 0xb00
+.org ABSOLUTE(0xb00)
 SYMBOL(exc_reserved1)
 	CONTEXT_STORE
@@ -203,5 +207,5 @@
 	b jump_to_kernel
 
-.org 0xc00
+.org ABSOLUTE(0xc00)
 SYMBOL(exc_syscall)
 	CONTEXT_STORE
@@ -209,5 +213,5 @@
 	b jump_to_kernel_syscall
 
-.org 0xd00
+.org ABSOLUTE(0xd00)
 SYMBOL(exc_trace)
 	CONTEXT_STORE
@@ -216,5 +220,5 @@
 	b jump_to_kernel
 
-.org 0x1000
+.org ABSOLUTE(0x1000)
 SYMBOL(exc_itlb_miss)
 	CONTEXT_STORE
@@ -223,5 +227,5 @@
 	b jump_to_kernel
 
-.org 0x1100
+.org ABSOLUTE(0x1100)
 SYMBOL(exc_dtlb_miss_load)
 	CONTEXT_STORE
@@ -230,5 +234,5 @@
 	b jump_to_kernel
 
-.org 0x1200
+.org ABSOLUTE(0x1200)
 SYMBOL(exc_dtlb_miss_store)
 	CONTEXT_STORE
@@ -237,5 +241,5 @@
 	b jump_to_kernel
 
-.org 0x4000
+.org ABSOLUTE(0x4000)
 jump_to_kernel:
 	mfsrr1 r5
@@ -289,2 +293,6 @@
 	addis sp, sp, 0x8000
 	rfi
+
+/* Rest is for stack. */
+
+.org ABSOLUTE(0x8000)
