1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* ------------------------------------------- 3 * 4 * Copyright (C) 1991, 1992 Linus Torvalds 5 * Copyright 2007 rPath, Inc. - All Rights R 6 * 7 * ------------------------------------------- 8 9 #include <linux/linkage.h> 10 11 /* 12 * Memory copy routines 13 */ 14 15 .code16 16 .text 17 18 SYM_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 32 SYM_FUNC_END(memcpy) 33 34 SYM_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 47 SYM_FUNC_END(memset) 48 49 SYM_FUNC_START_NOALIGN(copy_from_fs) 50 pushw %ds 51 pushw %fs 52 popw %ds 53 calll memcpy 54 popw %ds 55 retl 56 SYM_FUNC_END(copy_from_fs) 57 58 SYM_FUNC_START_NOALIGN(copy_to_fs) 59 pushw %es 60 pushw %fs 61 popw %es 62 calll memcpy 63 popw %es 64 retl 65 SYM_FUNC_END(copy_to_fs)
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.