summaryrefslogtreecommitdiff
path: root/nuttx/arch/x86/src
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-03-07 02:53:37 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-03-07 02:53:37 +0000
commitddd126cb2969bec42a4430b7d8fcdd45de4a42c1 (patch)
tree283523ab8c113f44f7cee4d75b7e8c4deac85b71 /nuttx/arch/x86/src
parentdc9631bf8e809702235b43dbc2414eb4a09622f9 (diff)
downloadpx4-nuttx-ddd126cb2969bec42a4430b7d8fcdd45de4a42c1.tar.gz
px4-nuttx-ddd126cb2969bec42a4430b7d8fcdd45de4a42c1.tar.bz2
px4-nuttx-ddd126cb2969bec42a4430b7d8fcdd45de4a42c1.zip
Add i486 toolchain support
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3349 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/x86/src')
-rw-r--r--nuttx/arch/x86/src/qemu/qemu_fullcontextrestore.S26
-rw-r--r--nuttx/arch/x86/src/qemu/qemu_saveusercontext.S20
2 files changed, 23 insertions, 23 deletions
diff --git a/nuttx/arch/x86/src/qemu/qemu_fullcontextrestore.S b/nuttx/arch/x86/src/qemu/qemu_fullcontextrestore.S
index b4704f23a..b9c553fdf 100644
--- a/nuttx/arch/x86/src/qemu/qemu_fullcontextrestore.S
+++ b/nuttx/arch/x86/src/qemu/qemu_fullcontextrestore.S
@@ -111,34 +111,34 @@ SYMBOL(up_fullcontextrestore):
* stack pointer.
*/
- movl (REG_SP)(%eax), %esp
+ movl (4*REG_SP)(%eax), %esp
/* Save the return address, EFLAGS, and the values as well the
* values of EBX and EAC on the new stack.
*/
- movl (REG_EIP)(%eax), %ebx
+ movl (4*REG_EIP)(%eax), %ebx
push %ebx
- movl (REG_EFLAGS)(%eax), %ebx
+ movl (4*REG_EFLAGS)(%eax), %ebx
push %ebx
- movl (REG_EAX)(%eax), %ebx
+ movl (4*REG_EAX)(%eax), %ebx
push %ebx
- movl (REG_EBX)(%eax), %ebx
+ movl (4*REG_EBX)(%eax), %ebx
push %ebx
/* Now restore the remaining registers */
- movl (REG_EDI)(%ebx), %edi
- movl (REG_ESI)(%ebx), %esi
- movl (REG_EBP)(%ebx), %ebp
- movl (REG_EDX)(%ebx), %edx
- movl (REG_ECX)(%ebx), %ecx
+ movl (4*REG_EDI)(%ebx), %edi
+ movl (4*REG_ESI)(%ebx), %esi
+ movl (4*REG_EBP)(%ebx), %ebp
+ movl (4*REG_EDX)(%ebx), %edx
+ movl (4*REG_ECX)(%ebx), %ecx
/* Restore the segment registers */
- mov (REG_DS)(%ebx), %ds
- mov (REG_CS)(%ebx), %cs
- mov (REG_SS)(%ebx), %ss
+ mov (4*REG_DS)(%ebx), %ds
+ mov (4*REG_CS)(%ebx), %cs
+ mov (4*REG_SS)(%ebx), %ss
/* Restore the correct value of EAX, EBX, and the EFLAGS then return */
diff --git a/nuttx/arch/x86/src/qemu/qemu_saveusercontext.S b/nuttx/arch/x86/src/qemu/qemu_saveusercontext.S
index 841023b40..3da2d1491 100644
--- a/nuttx/arch/x86/src/qemu/qemu_saveusercontext.S
+++ b/nuttx/arch/x86/src/qemu/qemu_saveusercontext.S
@@ -121,37 +121,37 @@ SYMBOL(up_saveusercontext):
* because it will be the return value from this function.
*/
- movl %ebx, (REG_EBX)(%eax)
- movl %esi, (REG_ESI)(%eax)
- movl %edi, (REG_EDI)(%eax)
+ movl %ebx, (4*REG_EBX)(%eax)
+ movl %esi, (4*REG_ESI)(%eax)
+ movl %edi, (4*REG_EDI)(%eax)
/* Save the segment registers */
- mov %ss, (REG_SS)(%eax)
- mov %cs, (REG_CS)(%eax)
- mov %ds, (REG_DS)(%eax)
+ mov %ss, (4*REG_SS)(%eax)
+ mov %cs, (4*REG_CS)(%eax)
+ mov %ds, (4*REG_DS)(%eax)
/* Save the value of SP as will be after we return (don't bother to save
* REG_ESP).
*/
leal 4(%esp), %ecx
- movl %ecx, (REG_SP)(%eax)
+ movl %ecx, (4*REG_SP)(%eax)
/* Fetch the PC from the stack and save it in the save block */
movl 0(%esp), %ecx
- movl %ecx, (REG_EIP)(%eax)
+ movl %ecx, (4*REG_EIP)(%eax)
/* Save the framepointer */
- movl %ebp, (REG_EBP)(%eax)
+ movl %ebp, (4*REG_EBP)(%eax)
/* Get and save the interrupt state */
pushf
pop %ecx
- movl %ecx, (REG_EFLAGS)(%eax)
+ movl %ecx, (4*REG_EFLAGS)(%eax)
/* And return 0. 'ret' will remove the EIP from the top of the stack. */