Comment # 2 on bug 1188327 from
Following is the disassembly of ecdsa_set_pub_key from v5.13.1 compiled with
the toolchain from arm:
arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture
10.2-2020.11 (arm-10.16)) 10.2.1 20201103

Both instances of ecc_swap_digits() are using ldr instruction.

crypto/ecc.h:
54        for (i = 0; i < ndigits; i++)
   0xc07bf174 <+132>:    cmp    r3, #0
   0xc07bf178 <+136>:    beq    0xc07bf1ec <ecdsa_set_pub_key+252>
   0xc07bf17c <+140>:    add    lr, r5, #1
   0xc07bf180 <+144>:    add    r0, r4, #72    ; 0x48
   0xc07bf184 <+148>:    sub    r5, r3, #1
   0xc07bf188 <+152>:    add    r3, lr, r3, lsl #3

55            out[i] = be64_to_cpu(src[ndigits - 1 - i]);
   0xc07bf18c <+156>:    ldr    r2, [r3, #-8]! //<== First load ==
   0xc07bf190 <+160>:    rev    r2, r2
   0xc07bf194 <+164>:    cmp    r3, lr
   0xc07bf198 <+168>:    ldr    r1, [r3, #4]  //<== Second load ==
   0xc07bf19c <+172>:    rev    r1, r1
   0xc07bf1a0 <+176>:    str    r1, [r0, #8]!
   0xc07bf1a4 <+180>:    str    r2, [r0, #4]

54        for (i = 0; i < ndigits; i++)
   0xc07bf1a8 <+184>:    bne    0xc07bf18c <ecdsa_set_pub_key+156>

crypto/ecdsa.c:
246        ecc_swap_digits(&digits[ndigits], ctx->pub_key.y, ndigits);
   0xc07bf1ac <+188>:    bic    r12, r12, #7

crypto/ecc.h:
54        for (i = 0; i < ndigits; i++)
   0xc07bf1b0 <+192>:    ldr    r0, [r4, #212]    ; 0xd4
   0xc07bf1b4 <+196>:    add    r2, r12, #8
   0xc07bf1b8 <+200>:    add    r12, r3, r12
   0xc07bf1bc <+204>:    add    r5, r2, r5, lsl #3
   0xc07bf1c0 <+208>:    sub    r0, r0, #8
   0xc07bf1c4 <+212>:    add    r3, r3, r5

55            out[i] = be64_to_cpu(src[ndigits - 1 - i]);
   0xc07bf1c8 <+216>:    ldr    r2, [r3, #-8]! //<== First load ==
   0xc07bf1cc <+220>:    rev    r2, r2
   0xc07bf1d0 <+224>:    cmp    r12, r3
   0xc07bf1d4 <+228>:    ldr    r1, [r3, #4]  //<== Second load ==
   0xc07bf1d8 <+232>:    rev    r1, r1
   0xc07bf1dc <+236>:    str    r1, [r0, #8]!
   0xc07bf1e0 <+240>:    str    r2, [r0, #4]


You are receiving this mail because: