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