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

sha256_asm.S (1502B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#include <linux/linkage.h>
      3#include <asm/visasm.h>
      4
      5#include "opcodes.h"
      6
      7ENTRY(sha256_sparc64_transform)
      8	/* %o0 = digest, %o1 = data, %o2 = rounds */
      9	VISEntryHalf
     10	ld	[%o0 + 0x00], %f0
     11	ld	[%o0 + 0x04], %f1
     12	ld	[%o0 + 0x08], %f2
     13	ld	[%o0 + 0x0c], %f3
     14	ld	[%o0 + 0x10], %f4
     15	ld	[%o0 + 0x14], %f5
     16	andcc	%o1, 0x7, %g0
     17	ld	[%o0 + 0x18], %f6
     18	bne,pn	%xcc, 10f
     19	 ld	[%o0 + 0x1c], %f7
     20
     211:
     22	ldd	[%o1 + 0x00], %f8
     23	ldd	[%o1 + 0x08], %f10
     24	ldd	[%o1 + 0x10], %f12
     25	ldd	[%o1 + 0x18], %f14
     26	ldd	[%o1 + 0x20], %f16
     27	ldd	[%o1 + 0x28], %f18
     28	ldd	[%o1 + 0x30], %f20
     29	ldd	[%o1 + 0x38], %f22
     30
     31	SHA256
     32
     33	subcc	%o2, 1, %o2
     34	bne,pt	%xcc, 1b
     35	 add	%o1, 0x40, %o1
     36
     375:
     38	st	%f0, [%o0 + 0x00]
     39	st	%f1, [%o0 + 0x04]
     40	st	%f2, [%o0 + 0x08]
     41	st	%f3, [%o0 + 0x0c]
     42	st	%f4, [%o0 + 0x10]
     43	st	%f5, [%o0 + 0x14]
     44	st	%f6, [%o0 + 0x18]
     45	st	%f7, [%o0 + 0x1c]
     46	retl
     47	 VISExitHalf
     4810:
     49	alignaddr %o1, %g0, %o1
     50
     51	ldd	[%o1 + 0x00], %f10
     521:
     53	ldd	[%o1 + 0x08], %f12
     54	ldd	[%o1 + 0x10], %f14
     55	ldd	[%o1 + 0x18], %f16
     56	ldd	[%o1 + 0x20], %f18
     57	ldd	[%o1 + 0x28], %f20
     58	ldd	[%o1 + 0x30], %f22
     59	ldd	[%o1 + 0x38], %f24
     60	ldd	[%o1 + 0x40], %f26
     61
     62	faligndata %f10, %f12, %f8
     63	faligndata %f12, %f14, %f10
     64	faligndata %f14, %f16, %f12
     65	faligndata %f16, %f18, %f14
     66	faligndata %f18, %f20, %f16
     67	faligndata %f20, %f22, %f18
     68	faligndata %f22, %f24, %f20
     69	faligndata %f24, %f26, %f22
     70
     71	SHA256
     72
     73	subcc	%o2, 1, %o2
     74	fsrc2	%f26, %f10
     75	bne,pt	%xcc, 1b
     76	 add	%o1, 0x40, %o1
     77
     78	ba,a,pt	%xcc, 5b
     79ENDPROC(sha256_sparc64_transform)