Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 69475
b: refs/heads/master
c: c1f438f
h: refs/heads/master
i:
  69473: 03d2f7d
  69471: 6bd851b
v: v3
  • Loading branch information
Catalin Marinas authored and Russell King committed Oct 12, 2007
1 parent ea1f27d commit 3819534
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ec6b1482265ec8430fc38c79205567c3601d8901
refs/heads/master: c1f438f5eec867707022e5f33bec5e91ec12f6e7
25 changes: 14 additions & 11 deletions trunk/arch/arm/nwfpe/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,24 @@ floating point instructions. GCC attempts to group floating point
instructions to allow the emulator to spread the cost of the trap over
several floating point instructions. */

#include <asm/asm-offsets.h>

.globl nwfpe_enter
nwfpe_enter:
mov r4, lr @ save the failure-return addresses
mov sl, sp @ we access the registers via 'sl'

ldr r5, [sp, #60] @ get contents of PC;
ldr r5, [sp, #S_PC] @ get contents of PC;
mov r6, r0 @ save the opcode
emulate:
ldr r1, [sp, #S_PSR] @ fetch the PSR
bl checkCondition @ check the condition
cmp r0, #0 @ r0 = 0 ==> condition failed

@ if condition code failed to match, next insn
beq next @ get the next instruction;

mov r0, r6 @ prepare for EmulateAll()
bl EmulateAll @ emulate the instruction
cmp r0, #0 @ was emulation successful
moveq pc, r4 @ no, return failure
Expand All @@ -91,18 +102,10 @@ next:
teqne r2, #0x0E000000
movne pc, r9 @ return ok if not a fp insn

str r5, [sp, #60] @ update PC copy in regs
str r5, [sp, #S_PC] @ update PC copy in regs

mov r0, r6 @ save a copy
ldr r1, [sp, #64] @ fetch the condition codes
bl checkCondition @ check the condition
cmp r0, #0 @ r0 = 0 ==> condition failed

@ if condition code failed to match, next insn
beq next @ get the next instruction;

mov r0, r6 @ prepare for EmulateAll()
b emulate @ if r0 != 0, goto EmulateAll
b emulate @ check condition and emulate

@ We need to be prepared for the instructions at .Lx1 and .Lx2
@ to fault. Emit the appropriate exception gunk to fix things up.
Expand Down

0 comments on commit 3819534

Please sign in to comment.