The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/crypto/openssl/aarch64/arm64cpuid.S

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $FreeBSD$ */
    2 /* Do not modify. This file is auto-generated from arm64cpuid.pl. */
    3 #include "arm_arch.h"
    4 
    5 .text
    6 .arch   armv8-a+crypto
    7 
    8 .align  5
    9 .globl  _armv7_neon_probe
   10 .type   _armv7_neon_probe,%function
   11 _armv7_neon_probe:
   12         orr     v15.16b, v15.16b, v15.16b
   13         ret
   14 .size   _armv7_neon_probe,.-_armv7_neon_probe
   15 
   16 .globl  _armv7_tick
   17 .type   _armv7_tick,%function
   18 _armv7_tick:
   19 #ifdef  __APPLE__
   20         mrs     x0, CNTPCT_EL0
   21 #else
   22         mrs     x0, CNTVCT_EL0
   23 #endif
   24         ret
   25 .size   _armv7_tick,.-_armv7_tick
   26 
   27 .globl  _armv8_aes_probe
   28 .type   _armv8_aes_probe,%function
   29 _armv8_aes_probe:
   30         aese    v0.16b, v0.16b
   31         ret
   32 .size   _armv8_aes_probe,.-_armv8_aes_probe
   33 
   34 .globl  _armv8_sha1_probe
   35 .type   _armv8_sha1_probe,%function
   36 _armv8_sha1_probe:
   37         sha1h   s0, s0
   38         ret
   39 .size   _armv8_sha1_probe,.-_armv8_sha1_probe
   40 
   41 .globl  _armv8_sha256_probe
   42 .type   _armv8_sha256_probe,%function
   43 _armv8_sha256_probe:
   44         sha256su0       v0.4s, v0.4s
   45         ret
   46 .size   _armv8_sha256_probe,.-_armv8_sha256_probe
   47 
   48 .globl  _armv8_pmull_probe
   49 .type   _armv8_pmull_probe,%function
   50 _armv8_pmull_probe:
   51         pmull   v0.1q, v0.1d, v0.1d
   52         ret
   53 .size   _armv8_pmull_probe,.-_armv8_pmull_probe
   54 
   55 .globl  _armv8_sha512_probe
   56 .type   _armv8_sha512_probe,%function
   57 _armv8_sha512_probe:
   58 .long   0xcec08000      // sha512su0    v0.2d,v0.2d
   59         ret
   60 .size   _armv8_sha512_probe,.-_armv8_sha512_probe
   61 
   62 .globl  OPENSSL_cleanse
   63 .type   OPENSSL_cleanse,%function
   64 .align  5
   65 OPENSSL_cleanse:
   66         cbz     x1,.Lret        // len==0?
   67         cmp     x1,#15
   68         b.hi    .Lot            // len>15
   69         nop
   70 .Little:
   71         strb    wzr,[x0],#1     // store byte-by-byte
   72         subs    x1,x1,#1
   73         b.ne    .Little
   74 .Lret:  ret
   75 
   76 .align  4
   77 .Lot:   tst     x0,#7
   78         b.eq    .Laligned       // inp is aligned
   79         strb    wzr,[x0],#1     // store byte-by-byte
   80         sub     x1,x1,#1
   81         b       .Lot
   82 
   83 .align  4
   84 .Laligned:
   85         str     xzr,[x0],#8     // store word-by-word
   86         sub     x1,x1,#8
   87         tst     x1,#-8
   88         b.ne    .Laligned       // len>=8
   89         cbnz    x1,.Little      // len!=0?
   90         ret
   91 .size   OPENSSL_cleanse,.-OPENSSL_cleanse
   92 
   93 .globl  CRYPTO_memcmp
   94 .type   CRYPTO_memcmp,%function
   95 .align  4
   96 CRYPTO_memcmp:
   97         eor     w3,w3,w3
   98         cbz     x2,.Lno_data    // len==0?
   99         cmp     x2,#16
  100         b.ne    .Loop_cmp
  101         ldp     x8,x9,[x0]
  102         ldp     x10,x11,[x1]
  103         eor     x8,x8,x10
  104         eor     x9,x9,x11
  105         orr     x8,x8,x9
  106         mov     x0,#1
  107         cmp     x8,#0
  108         csel    x0,xzr,x0,eq
  109         ret
  110 
  111 .align  4
  112 .Loop_cmp:
  113         ldrb    w4,[x0],#1
  114         ldrb    w5,[x1],#1
  115         eor     w4,w4,w5
  116         orr     w3,w3,w4
  117         subs    x2,x2,#1
  118         b.ne    .Loop_cmp
  119 
  120 .Lno_data:
  121         neg     w0,w3
  122         lsr     w0,w0,#31
  123         ret
  124 .size   CRYPTO_memcmp,.-CRYPTO_memcmp

Cache object: 538b44e69ccd1908ec4c29f81f7bed0c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.