patch-2.4.19 linux-2.4.19/arch/arm/nwfpe/entry.S
Next file: linux-2.4.19/arch/arm/nwfpe/entry26.S
Previous file: linux-2.4.19/arch/arm/nwfpe/double_cpdo.c
Back to the patch index
Back to the overall index
- Lines: 53
- Date:
Fri Aug 2 17:39:42 2002
- Orig file:
linux-2.4.18/arch/arm/nwfpe/entry.S
- Orig date:
Sun Aug 12 11:13:59 2001
diff -urN linux-2.4.18/arch/arm/nwfpe/entry.S linux-2.4.19/arch/arm/nwfpe/entry.S
@@ -50,11 +50,8 @@
This routine does three things:
-1) It saves SP into a variable called userRegisters. The kernel has
-created a struct pt_regs on the stack and saved the user registers
-into it. See /usr/include/asm/proc/ptrace.h for details. The
-emulator code uses userRegisters as the base of an array of words from
-which the contents of the registers can be extracted.
+1) The kernel has created a struct pt_regs on the stack and saved the
+user registers into it. See inclue/asm-arm/proc/ptrace.h for details.
2) It calls EmulateAll to emulate a floating point instruction.
EmulateAll returns 1 if the emulation was successful, or 0 if not.
@@ -73,21 +70,16 @@
.globl nwfpe_enter
nwfpe_enter:
- /* ?? Could put userRegisters and fpa11 into fixed regs during
- emulation. This would reduce load/store overhead at the expense
- of stealing two regs from the register allocator. Not sure if
- it's worth it. */
- str sp, [r10] @ Store the user registers pointer in the fpa11 structure.
- mov r4, sp @ use r4 for local pointer
- mov r10, lr @ save the failure-return addresses
+ mov r4, lr @ save the failure-return addresses
+ mov sl, sp @ we access the registers via 'sl'
- ldr r5, [r4, #60] @ get contents of PC;
+ ldr r5, [sp, #60] @ get contents of PC;
sub r8, r5, #4
.Lx2: ldrt r0, [r8] @ get actual instruction into r0
emulate:
bl EmulateAll @ emulate the instruction
cmp r0, #0 @ was emulation successful
- moveq pc, r10 @ no, return failure
+ moveq pc, r4 @ no, return failure
next:
.Lx1: ldrt r6, [r5], #4 @ get the next instruction and
@@ -99,10 +91,10 @@
teqne r2, #0x0E000000
movne pc, r9 @ return ok if not a fp insn
- str r5, [r4, #60] @ update PC copy in regs
+ str r5, [sp, #60] @ update PC copy in regs
mov r0, r6 @ save a copy
- ldr r1, [r4, #64] @ fetch the condition codes
+ ldr r1, [sp, #64] @ fetch the condition codes
bl checkCondition @ check the condition
cmp r0, #0 @ r0 = 0 ==> condition failed
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)