Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / arch / i386 / core / linux / linuxprefix.S
diff --git a/qemu/roms/ipxe/src/arch/i386/core/linux/linuxprefix.S b/qemu/roms/ipxe/src/arch/i386/core/linux/linuxprefix.S
new file mode 100644 (file)
index 0000000..398d3cb
--- /dev/null
@@ -0,0 +1,28 @@
+#include <linux/unistd.h>
+
+       .section ".text"
+       .code32
+       .globl _linux_start
+       .type _linux_start, @function
+
+_linux_start:
+       xorl    %ebp, %ebp
+
+       popl    %esi       // save argc
+       movl    %esp, %edi // save argv
+
+       andl    $~15, %esp // 16-byte align the stack
+
+       pushl   %edi // argv -> C arg2
+       pushl   %esi // argc -> C arg1
+
+       call    save_args
+
+       /* Our main doesn't use any arguments */
+       call    main
+
+       movl    %eax, %ebx // rc -> syscall arg1
+       movl    $__NR_exit, %eax
+       int     $0x80
+
+       .size _linux_start, . - _linux_start