diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2009-07-24 07:32:57 -0400 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2009-07-24 07:32:57 -0400 |
commit | 8b592783a2e8b7721a99730bd549aab5208f36af (patch) | |
tree | 468636a17d31f6a29287240c63234e739eabf666 /arch/arm/lib/clear_user.S | |
parent | 347c8b70b1d5256e445e54e736f88d21877616cf (diff) |
Thumb-2: Implement the unified arch/arm/lib functions
This patch adds the ARM/Thumb-2 unified support for the arch/arm/lib/*
files.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm/lib/clear_user.S')
-rw-r--r-- | arch/arm/lib/clear_user.S | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S index 844f56785ebc..1279abd8b886 100644 --- a/arch/arm/lib/clear_user.S +++ b/arch/arm/lib/clear_user.S | |||
@@ -27,21 +27,20 @@ WEAK(__clear_user) | |||
27 | ands ip, r0, #3 | 27 | ands ip, r0, #3 |
28 | beq 1f | 28 | beq 1f |
29 | cmp ip, #2 | 29 | cmp ip, #2 |
30 | USER( strbt r2, [r0], #1) | 30 | strusr r2, r0, 1 |
31 | USER( strlebt r2, [r0], #1) | 31 | strusr r2, r0, 1, le |
32 | USER( strltbt r2, [r0], #1) | 32 | strusr r2, r0, 1, lt |
33 | rsb ip, ip, #4 | 33 | rsb ip, ip, #4 |
34 | sub r1, r1, ip @ 7 6 5 4 3 2 1 | 34 | sub r1, r1, ip @ 7 6 5 4 3 2 1 |
35 | 1: subs r1, r1, #8 @ -1 -2 -3 -4 -5 -6 -7 | 35 | 1: subs r1, r1, #8 @ -1 -2 -3 -4 -5 -6 -7 |
36 | USER( strplt r2, [r0], #4) | 36 | strusr r2, r0, 4, pl, rept=2 |
37 | USER( strplt r2, [r0], #4) | ||
38 | bpl 1b | 37 | bpl 1b |
39 | adds r1, r1, #4 @ 3 2 1 0 -1 -2 -3 | 38 | adds r1, r1, #4 @ 3 2 1 0 -1 -2 -3 |
40 | USER( strplt r2, [r0], #4) | 39 | strusr r2, r0, 4, pl |
41 | 2: tst r1, #2 @ 1x 1x 0x 0x 1x 1x 0x | 40 | 2: tst r1, #2 @ 1x 1x 0x 0x 1x 1x 0x |
42 | USER( strnebt r2, [r0], #1) | 41 | strusr r2, r0, 1, ne, rept=2 |
43 | USER( strnebt r2, [r0], #1) | ||
44 | tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1 | 42 | tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1 |
43 | it ne @ explicit IT needed for the label | ||
45 | USER( strnebt r2, [r0]) | 44 | USER( strnebt r2, [r0]) |
46 | mov r0, #0 | 45 | mov r0, #0 |
47 | ldmfd sp!, {r1, pc} | 46 | ldmfd sp!, {r1, pc} |