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

U1copy_from_user.S (874B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* U1copy_from_user.S: UltraSparc-I/II/IIi/IIe optimized copy from userspace.
      3 *
      4 * Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com)
      5 */
      6
      7#define EX_LD(x,y)		\
      898:	x;			\
      9	.section __ex_table,"a";\
     10	.align 4;		\
     11	.word 98b, y;		\
     12	.text;			\
     13	.align 4;
     14
     15#define EX_LD_FP(x,y)		\
     1698:	x;			\
     17	.section __ex_table,"a";\
     18	.align 4;		\
     19	.word 98b, y;		\
     20	.text;			\
     21	.align 4;
     22
     23#define FUNC_NAME		raw_copy_from_user
     24#define LOAD(type,addr,dest)	type##a [addr] %asi, dest
     25#define LOAD_BLK(addr,dest)	ldda [addr] ASI_BLK_AIUS, dest
     26#define EX_RETVAL(x)		0
     27
     28	/* Writing to %asi is _expensive_ so we hardcode it.
     29	 * Reading %asi to check for KERNEL_DS is comparatively
     30	 * cheap.
     31	 */
     32#define PREAMBLE					\
     33	rd		%asi, %g1;			\
     34	cmp		%g1, ASI_AIUS;			\
     35	bne,pn		%icc, raw_copy_in_user;		\
     36	 nop;						\
     37
     38#include "U1memcpy.S"