cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sha512_asm.S (2134B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#include <linux/linkage.h>
      3#include <asm/visasm.h>
      4
      5#include "opcodes.h"
      6
      7ENTRY(sha512_sparc64_transform)
      8	/* %o0 = digest, %o1 = data, %o2 = rounds */
      9	VISEntry
     10	ldd	[%o0 + 0x00], %f0
     11	ldd	[%o0 + 0x08], %f2
     12	ldd	[%o0 + 0x10], %f4
     13	ldd	[%o0 + 0x18], %f6
     14	ldd	[%o0 + 0x20], %f8
     15	ldd	[%o0 + 0x28], %f10
     16	andcc	%o1, 0x7, %g0
     17	ldd	[%o0 + 0x30], %f12
     18	bne,pn	%xcc, 10f
     19	 ldd	[%o0 + 0x38], %f14
     20
     211:
     22	ldd	[%o1 + 0x00], %f16
     23	ldd	[%o1 + 0x08], %f18
     24	ldd	[%o1 + 0x10], %f20
     25	ldd	[%o1 + 0x18], %f22
     26	ldd	[%o1 + 0x20], %f24
     27	ldd	[%o1 + 0x28], %f26
     28	ldd	[%o1 + 0x30], %f28
     29	ldd	[%o1 + 0x38], %f30
     30	ldd	[%o1 + 0x40], %f32
     31	ldd	[%o1 + 0x48], %f34
     32	ldd	[%o1 + 0x50], %f36
     33	ldd	[%o1 + 0x58], %f38
     34	ldd	[%o1 + 0x60], %f40
     35	ldd	[%o1 + 0x68], %f42
     36	ldd	[%o1 + 0x70], %f44
     37	ldd	[%o1 + 0x78], %f46
     38
     39	SHA512
     40
     41	subcc	%o2, 1, %o2
     42	bne,pt	%xcc, 1b
     43	 add	%o1, 0x80, %o1
     44
     455:
     46	std	%f0, [%o0 + 0x00]
     47	std	%f2, [%o0 + 0x08]
     48	std	%f4, [%o0 + 0x10]
     49	std	%f6, [%o0 + 0x18]
     50	std	%f8, [%o0 + 0x20]
     51	std	%f10, [%o0 + 0x28]
     52	std	%f12, [%o0 + 0x30]
     53	std	%f14, [%o0 + 0x38]
     54	retl
     55	 VISExit
     5610:
     57	alignaddr %o1, %g0, %o1
     58
     59	ldd	[%o1 + 0x00], %f18
     601:
     61	ldd	[%o1 + 0x08], %f20
     62	ldd	[%o1 + 0x10], %f22
     63	ldd	[%o1 + 0x18], %f24
     64	ldd	[%o1 + 0x20], %f26
     65	ldd	[%o1 + 0x28], %f28
     66	ldd	[%o1 + 0x30], %f30
     67	ldd	[%o1 + 0x38], %f32
     68	ldd	[%o1 + 0x40], %f34
     69	ldd	[%o1 + 0x48], %f36
     70	ldd	[%o1 + 0x50], %f38
     71	ldd	[%o1 + 0x58], %f40
     72	ldd	[%o1 + 0x60], %f42
     73	ldd	[%o1 + 0x68], %f44
     74	ldd	[%o1 + 0x70], %f46
     75	ldd	[%o1 + 0x78], %f48
     76	ldd	[%o1 + 0x80], %f50
     77
     78	faligndata %f18, %f20, %f16
     79	faligndata %f20, %f22, %f18
     80	faligndata %f22, %f24, %f20
     81	faligndata %f24, %f26, %f22
     82	faligndata %f26, %f28, %f24
     83	faligndata %f28, %f30, %f26
     84	faligndata %f30, %f32, %f28
     85	faligndata %f32, %f34, %f30
     86	faligndata %f34, %f36, %f32
     87	faligndata %f36, %f38, %f34
     88	faligndata %f38, %f40, %f36
     89	faligndata %f40, %f42, %f38
     90	faligndata %f42, %f44, %f40
     91	faligndata %f44, %f46, %f42
     92	faligndata %f46, %f48, %f44
     93	faligndata %f48, %f50, %f46
     94
     95	SHA512
     96
     97	subcc	%o2, 1, %o2
     98	fsrc2	%f50, %f18
     99	bne,pt	%xcc, 1b
    100	 add	%o1, 0x80, %o1
    101
    102	ba,a,pt	%xcc, 5b
    103ENDPROC(sha512_sparc64_transform)