aboutsummaryrefslogtreecommitdiff
path: root/src/entryfuncs.S
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2009-05-16 23:57:08 -0400
committerKevin O'Connor <kevin@koconnor.net>2009-05-16 23:57:08 -0400
commit7da210c73acec4c6196a3915dba084cd8f9f23f5 (patch)
tree101a16aed461bad4a2a5e4b29e1a393ba197dbc1 /src/entryfuncs.S
parent9f193b9883da62105238c9b5e199e28508748f09 (diff)
downloadseabios-hppa-7da210c73acec4c6196a3915dba084cd8f9f23f5.zip
seabios-hppa-7da210c73acec4c6196a3915dba084cd8f9f23f5.tar.gz
seabios-hppa-7da210c73acec4c6196a3915dba084cd8f9f23f5.tar.bz2
Support %ebp register in 'struct bregs'.
Save/restore %ebp on irq entry. Support saving and restoring %ebp on call16. Enable display of %ebp in register dumps.
Diffstat (limited to 'src/entryfuncs.S')
-rw-r--r--src/entryfuncs.S10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/entryfuncs.S b/src/entryfuncs.S
index 96a2fcf..65218e3 100644
--- a/src/entryfuncs.S
+++ b/src/entryfuncs.S
@@ -67,6 +67,7 @@
pushl %ecx
pushl %edx
pushl %ebx
+ pushl %ebp
pushl %esi
pushl %edi
pushw %es
@@ -82,6 +83,7 @@
popw %es
popl %edi
popl %esi
+ popl %ebp
popl %ebx
popl %edx
popl %ecx
@@ -95,6 +97,7 @@
pushl %ecx
pushl %edx
pushl %ebx
+ pushl %ebp
pushl %esi
pushl %edi
pushw %es
@@ -103,8 +106,8 @@
movw %cx, %ds
movl %esp, %ebx // Backup %esp, then zero high bits
movzwl %sp, %esp
- movl 24(%esp), %ecx // Get calling function
- movl %eax, 24(%esp) // Save %eax
+ movl 28(%esp), %ecx // Get calling function
+ movl %eax, 28(%esp) // Save %eax
movl %esp, %eax // First arg is pointer to struct bregs
calll *%ecx
movl %ebx, %esp // Restore %esp (including high bits)
@@ -112,6 +115,7 @@
popw %es
popl %edi
popl %esi
+ popl %ebp
popl %ebx
popl %edx
popl %ecx
@@ -126,6 +130,7 @@
pushl %ecx
pushl %edx
pushl %ebx
+ pushl %ebp
pushl %esi
pushl %edi
pushw %es
@@ -138,6 +143,7 @@
popw %es
popl %edi
popl %esi
+ popl %ebp
popl %ebx
popl %edx
popl %ecx