diff --git a/arch/ppc/build.xml b/arch/ppc/build.xml
index 4aec62f..f110cde 100644
--- a/arch/ppc/build.xml
+++ b/arch/ppc/build.xml
@@ -193,6 +193,14 @@
+
+
+ $(call quiet-command,$(LD) --warn-common -N -T $(SRCDIR)/arch/$(ARCH)/qemu/rtas-ldscript -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@")
+ $(call quiet-command,$(NM) $@.nostrip | sort > $(ODIR)rtas-qemu.syms," GEN $(TARGET_DIR)$@.syms")
+ $(call quiet-command,$(STRIP) $@.nostrip -o $@," STRIP $(TARGET_DIR)$@")
+
+
+
$(call quiet-command,$(LD) -g -Ttext=0x01e01000 -Bstatic $^ $(shell $(CC) -print-libgcc-file-name) -o $@.nostrip --whole-archive $^," LINK $(TARGET_DIR)$@")
diff --git a/arch/ppc/qemu/rtas-ldscript b/arch/ppc/qemu/rtas-ldscript
new file mode 100644
index 0000000..0c19dc9
--- /dev/null
+++ b/arch/ppc/qemu/rtas-ldscript
@@ -0,0 +1,44 @@
+OUTPUT_FORMAT(elf32-powerpc)
+OUTPUT_ARCH(powerpc)
+
+SECTIONS
+{
+ _start = .;
+
+ /* Normal sections */
+ .text ALIGN(4096): {
+ *(.text)
+ *(.text.*)
+ }
+
+ .rodata ALIGN(4096): {
+ _rodata = .;
+ *(.rodata)
+ *(.rodata.*)
+ *(.note.ELFBoot)
+ }
+ .data ALIGN(4096): {
+ _data = .;
+ *(.data)
+ *(.data.*)
+ _edata = .;
+ }
+
+ .bss ALIGN(4096): {
+ _bss = .;
+ *(.sbss)
+ *(.sbss.*)
+ *(.bss)
+ *(.bss.*)
+ *(COMMON)
+ _ebss = .;
+ }
+
+ . = ALIGN(4096);
+ _end = .;
+
+ /* We discard .note sections other than .note.ELFBoot,
+ * because some versions of GCC generate useless ones. */
+
+ /DISCARD/ : { *(.comment*) *(.note.*) }
+}
diff --git a/arch/ppc/qemu/rtas.S b/arch/ppc/qemu/rtas.S
new file mode 100644
index 0000000..c02b0a8
--- /dev/null
+++ b/arch/ppc/qemu/rtas.S
@@ -0,0 +1,14 @@
+/*
+ * RTAS blob for QEMU
+ * Copyright (c) 2010 Andreas Färber
+ */
+
+#include "asm/asmdefs.h"
+
+ /* real mode! */
+GLOBL(_entry):
+ /*
+ * r3 = arguments
+ * r4 = private memory
+ */
+ blr