| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * linux/arch/arm/lib/memmove.S |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Author: Nicolas Pitre |
|---|
| 5 | 6 | * Created: Sep 28, 2005 |
|---|
| 6 | 7 | * Copyright: (C) MontaVista Software Inc. |
|---|
| 7 | | - * |
|---|
| 8 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 9 | | - * it under the terms of the GNU General Public License version 2 as |
|---|
| 10 | | - * published by the Free Software Foundation. |
|---|
| 11 | 8 | */ |
|---|
| 12 | 9 | |
|---|
| 13 | 10 | #include <linux/linkage.h> |
|---|
| .. | .. |
|---|
| 59 | 56 | blt 5f |
|---|
| 60 | 57 | |
|---|
| 61 | 58 | CALGN( ands ip, r0, #31 ) |
|---|
| 62 | | - CALGN( sbcnes r4, ip, r2 ) @ C is always set here |
|---|
| 59 | + CALGN( sbcsne r4, ip, r2 ) @ C is always set here |
|---|
| 63 | 60 | CALGN( bcs 2f ) |
|---|
| 64 | 61 | CALGN( adr r4, 6f ) |
|---|
| 65 | 62 | CALGN( subs r2, r2, ip ) @ C is set here |
|---|
| .. | .. |
|---|
| 114 | 111 | UNWIND( .save {r0, r4, lr} ) @ still in first stmfd block |
|---|
| 115 | 112 | |
|---|
| 116 | 113 | 8: movs r2, r2, lsl #31 |
|---|
| 117 | | - ldrneb r3, [r1, #-1]! |
|---|
| 118 | | - ldrcsb r4, [r1, #-1]! |
|---|
| 119 | | - ldrcsb ip, [r1, #-1] |
|---|
| 120 | | - strneb r3, [r0, #-1]! |
|---|
| 121 | | - strcsb r4, [r0, #-1]! |
|---|
| 122 | | - strcsb ip, [r0, #-1] |
|---|
| 114 | + ldrbne r3, [r1, #-1]! |
|---|
| 115 | + ldrbcs r4, [r1, #-1]! |
|---|
| 116 | + ldrbcs ip, [r1, #-1] |
|---|
| 117 | + strbne r3, [r0, #-1]! |
|---|
| 118 | + strbcs r4, [r0, #-1]! |
|---|
| 119 | + strbcs ip, [r0, #-1] |
|---|
| 123 | 120 | ldmfd sp!, {r0, r4, pc} |
|---|
| 124 | 121 | |
|---|
| 125 | 122 | 9: cmp ip, #2 |
|---|
| 126 | | - ldrgtb r3, [r1, #-1]! |
|---|
| 127 | | - ldrgeb r4, [r1, #-1]! |
|---|
| 123 | + ldrbgt r3, [r1, #-1]! |
|---|
| 124 | + ldrbge r4, [r1, #-1]! |
|---|
| 128 | 125 | ldrb lr, [r1, #-1]! |
|---|
| 129 | | - strgtb r3, [r0, #-1]! |
|---|
| 130 | | - strgeb r4, [r0, #-1]! |
|---|
| 126 | + strbgt r3, [r0, #-1]! |
|---|
| 127 | + strbge r4, [r0, #-1]! |
|---|
| 131 | 128 | subs r2, r2, ip |
|---|
| 132 | 129 | strb lr, [r0, #-1]! |
|---|
| 133 | 130 | blt 8b |
|---|
| .. | .. |
|---|
| 150 | 147 | blt 14f |
|---|
| 151 | 148 | |
|---|
| 152 | 149 | CALGN( ands ip, r0, #31 ) |
|---|
| 153 | | - CALGN( sbcnes r4, ip, r2 ) @ C is always set here |
|---|
| 150 | + CALGN( sbcsne r4, ip, r2 ) @ C is always set here |
|---|
| 154 | 151 | CALGN( subcc r2, r2, ip ) |
|---|
| 155 | 152 | CALGN( bcc 15f ) |
|---|
| 156 | 153 | |
|---|