summaryrefslogtreecommitdiff
path: root/util/mkelfImage/kunzip_src/arch/i386/lib/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'util/mkelfImage/kunzip_src/arch/i386/lib/start.S')
-rw-r--r--util/mkelfImage/kunzip_src/arch/i386/lib/start.S36
1 files changed, 36 insertions, 0 deletions
diff --git a/util/mkelfImage/kunzip_src/arch/i386/lib/start.S b/util/mkelfImage/kunzip_src/arch/i386/lib/start.S
new file mode 100644
index 0000000000..fec7c9da66
--- /dev/null
+++ b/util/mkelfImage/kunzip_src/arch/i386/lib/start.S
@@ -0,0 +1,36 @@
+.text
+
+__original_registers:
+ .long 0, 0, 0, 0, 0, 0 , 0 , 0
+__entry:
+ .long entry
+
+.globl __start
+__start:
+ movl %eax, 0+__original_registers
+ movl %ebx, 4+__original_registers
+ movl %ecx, 8+__original_registers
+ movl %edx, 12+__original_registers
+ movl %esi, 16+__original_registers
+ movl %edi, 20+__original_registers
+ movl %esp, 24+__original_registers
+ movl %ebp, 28+__original_registers
+
+__normal_start:
+ movl $_estack, %esp
+ call kunzip
+
+.globl jmp_to_program_entry
+jmp_to_program_entry:
+ movl 4(%esp), %eax
+ movl %eax, __entry
+ movl 0+__original_registers, %eax
+ movl 4+__original_registers, %ebx
+ movl 8+__original_registers, %ecx
+ movl 12+__original_registers, %edx
+ movl 16+__original_registers, %esi
+ movl 20+__original_registers, %edi
+ movl 24+__original_registers, %esp
+ movl 28+__original_registers, %ebp
+ jmp *__entry
+ \ No newline at end of file