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

copy.S (1045B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/* ----------------------------------------------------------------------- *
      3 *
      4 *   Copyright (C) 1991, 1992 Linus Torvalds
      5 *   Copyright 2007 rPath, Inc. - All Rights Reserved
      6 *
      7 * ----------------------------------------------------------------------- */
      8
      9#include <linux/linkage.h>
     10
     11/*
     12 * Memory copy routines
     13 */
     14
     15	.code16
     16	.text
     17
     18SYM_FUNC_START_NOALIGN(memcpy)
     19	pushw	%si
     20	pushw	%di
     21	movw	%ax, %di
     22	movw	%dx, %si
     23	pushw	%cx
     24	shrw	$2, %cx
     25	rep; movsl
     26	popw	%cx
     27	andw	$3, %cx
     28	rep; movsb
     29	popw	%di
     30	popw	%si
     31	retl
     32SYM_FUNC_END(memcpy)
     33
     34SYM_FUNC_START_NOALIGN(memset)
     35	pushw	%di
     36	movw	%ax, %di
     37	movzbl	%dl, %eax
     38	imull	$0x01010101,%eax
     39	pushw	%cx
     40	shrw	$2, %cx
     41	rep; stosl
     42	popw	%cx
     43	andw	$3, %cx
     44	rep; stosb
     45	popw	%di
     46	retl
     47SYM_FUNC_END(memset)
     48
     49SYM_FUNC_START_NOALIGN(copy_from_fs)
     50	pushw	%ds
     51	pushw	%fs
     52	popw	%ds
     53	calll	memcpy
     54	popw	%ds
     55	retl
     56SYM_FUNC_END(copy_from_fs)
     57
     58SYM_FUNC_START_NOALIGN(copy_to_fs)
     59	pushw	%es
     60	pushw	%fs
     61	popw	%es
     62	calll	memcpy
     63	popw	%es
     64	retl
     65SYM_FUNC_END(copy_to_fs)