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

copypage_64.S (2059B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Copyright (C) 2008 Mark Nelson, IBM Corp.
      4 */
      5#include <asm/page.h>
      6#include <asm/processor.h>
      7#include <asm/ppc_asm.h>
      8#include <asm/asm-offsets.h>
      9#include <asm/export.h>
     10#include <asm/feature-fixups.h>
     11
     12        .section        ".toc","aw"
     13PPC64_CACHES:
     14        .tc             ppc64_caches[TC],ppc64_caches
     15        .section        ".text"
     16
     17_GLOBAL_TOC(copy_page)
     18BEGIN_FTR_SECTION
     19	lis	r5,PAGE_SIZE@h
     20FTR_SECTION_ELSE
     21#ifdef CONFIG_PPC_BOOK3S_64
     22	b	copypage_power7
     23#endif
     24ALT_FTR_SECTION_END_IFCLR(CPU_FTR_VMX_COPY)
     25	ori	r5,r5,PAGE_SIZE@l
     26BEGIN_FTR_SECTION
     27	ld      r10,PPC64_CACHES@toc(r2)
     28	lwz	r11,DCACHEL1LOGBLOCKSIZE(r10)	/* log2 of cache block size */
     29	lwz     r12,DCACHEL1BLOCKSIZE(r10)	/* get cache block size */
     30	li	r9,0
     31	srd	r8,r5,r11
     32
     33	mtctr	r8
     34.Lsetup:
     35	dcbt	r9,r4
     36	dcbz	r9,r3
     37	add	r9,r9,r12
     38	bdnz	.Lsetup
     39END_FTR_SECTION_IFSET(CPU_FTR_CP_USE_DCBTZ)
     40	addi	r3,r3,-8
     41	srdi    r8,r5,7		/* page is copied in 128 byte strides */
     42	addi	r8,r8,-1	/* one stride copied outside loop */
     43
     44	mtctr	r8
     45
     46	ld	r5,0(r4)
     47	ld	r6,8(r4)
     48	ld	r7,16(r4)
     49	ldu	r8,24(r4)
     501:	std	r5,8(r3)
     51	std	r6,16(r3)
     52	ld	r9,8(r4)
     53	ld	r10,16(r4)
     54	std	r7,24(r3)
     55	std	r8,32(r3)
     56	ld	r11,24(r4)
     57	ld	r12,32(r4)
     58	std	r9,40(r3)
     59	std	r10,48(r3)
     60	ld	r5,40(r4)
     61	ld	r6,48(r4)
     62	std	r11,56(r3)
     63	std	r12,64(r3)
     64	ld	r7,56(r4)
     65	ld	r8,64(r4)
     66	std	r5,72(r3)
     67	std	r6,80(r3)
     68	ld	r9,72(r4)
     69	ld	r10,80(r4)
     70	std	r7,88(r3)
     71	std	r8,96(r3)
     72	ld	r11,88(r4)
     73	ld	r12,96(r4)
     74	std	r9,104(r3)
     75	std	r10,112(r3)
     76	ld	r5,104(r4)
     77	ld	r6,112(r4)
     78	std	r11,120(r3)
     79	stdu	r12,128(r3)
     80	ld	r7,120(r4)
     81	ldu	r8,128(r4)
     82	bdnz	1b
     83
     84	std	r5,8(r3)
     85	std	r6,16(r3)
     86	ld	r9,8(r4)
     87	ld	r10,16(r4)
     88	std	r7,24(r3)
     89	std	r8,32(r3)
     90	ld	r11,24(r4)
     91	ld	r12,32(r4)
     92	std	r9,40(r3)
     93	std	r10,48(r3)
     94	ld	r5,40(r4)
     95	ld	r6,48(r4)
     96	std	r11,56(r3)
     97	std	r12,64(r3)
     98	ld	r7,56(r4)
     99	ld	r8,64(r4)
    100	std	r5,72(r3)
    101	std	r6,80(r3)
    102	ld	r9,72(r4)
    103	ld	r10,80(r4)
    104	std	r7,88(r3)
    105	std	r8,96(r3)
    106	ld	r11,88(r4)
    107	ld	r12,96(r4)
    108	std	r9,104(r3)
    109	std	r10,112(r3)
    110	std	r11,120(r3)
    111	std	r12,128(r3)
    112	blr
    113EXPORT_SYMBOL(copy_page)