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

page.S (1770B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
      4 */
      5#include <linux/linkage.h>
      6#include <asm/asm.h>
      7#include <asm/export.h>
      8#include <asm/page.h>
      9#include <asm/regdef.h>
     10
     11	.align 5
     12SYM_FUNC_START(clear_page)
     13	lu12i.w  t0, 1 << (PAGE_SHIFT - 12)
     14	add.d    t0, t0, a0
     151:
     16	st.d     zero, a0, 0
     17	st.d     zero, a0, 8
     18	st.d     zero, a0, 16
     19	st.d     zero, a0, 24
     20	st.d     zero, a0, 32
     21	st.d     zero, a0, 40
     22	st.d     zero, a0, 48
     23	st.d     zero, a0, 56
     24	addi.d   a0,   a0, 128
     25	st.d     zero, a0, -64
     26	st.d     zero, a0, -56
     27	st.d     zero, a0, -48
     28	st.d     zero, a0, -40
     29	st.d     zero, a0, -32
     30	st.d     zero, a0, -24
     31	st.d     zero, a0, -16
     32	st.d     zero, a0, -8
     33	bne      t0,   a0, 1b
     34
     35	jirl     $r0, ra, 0
     36SYM_FUNC_END(clear_page)
     37EXPORT_SYMBOL(clear_page)
     38
     39.align 5
     40SYM_FUNC_START(copy_page)
     41	lu12i.w  t8, 1 << (PAGE_SHIFT - 12)
     42	add.d    t8, t8, a0
     431:
     44	ld.d     t0, a1,  0
     45	ld.d     t1, a1,  8
     46	ld.d     t2, a1,  16
     47	ld.d     t3, a1,  24
     48	ld.d     t4, a1,  32
     49	ld.d     t5, a1,  40
     50	ld.d     t6, a1,  48
     51	ld.d     t7, a1,  56
     52
     53	st.d     t0, a0,  0
     54	st.d     t1, a0,  8
     55	ld.d     t0, a1,  64
     56	ld.d     t1, a1,  72
     57	st.d     t2, a0,  16
     58	st.d     t3, a0,  24
     59	ld.d     t2, a1,  80
     60	ld.d     t3, a1,  88
     61	st.d     t4, a0,  32
     62	st.d     t5, a0,  40
     63	ld.d     t4, a1,  96
     64	ld.d     t5, a1,  104
     65	st.d     t6, a0,  48
     66	st.d     t7, a0,  56
     67	ld.d     t6, a1,  112
     68	ld.d     t7, a1,  120
     69	addi.d   a0, a0,  128
     70	addi.d   a1, a1,  128
     71
     72	st.d     t0, a0,  -64
     73	st.d     t1, a0,  -56
     74	st.d     t2, a0,  -48
     75	st.d     t3, a0,  -40
     76	st.d     t4, a0,  -32
     77	st.d     t5, a0,  -24
     78	st.d     t6, a0,  -16
     79	st.d     t7, a0,  -8
     80
     81	bne      t8, a0, 1b
     82	jirl     $r0, ra, 0
     83SYM_FUNC_END(copy_page)
     84EXPORT_SYMBOL(copy_page)