/* ----------------------------------------------------------------------- * * * Copyright (C) 1991, 1992 Linus Torvalds * Copyright 2007 rPath, Inc. - All Rights Reserved * * This file is part of the Linux kernel, and is made available under * the terms of the GNU General Public License version 2. * * ----------------------------------------------------------------------- */ /* * Memory copy routines */ .code16gcc .text .globl memcpy .type memcpy, @function memcpy: pushw %si pushw %di movw %ax, %di movw %dx, %si pushw %cx shrw $2, %cx rep; movsl popw %cx andw $3, %cx rep; movsb popw %di popw %si ret .size memcpy, .-memcpy .globl memset .type memset, @function memset: pushw %di movw %ax, %di movzbl %dl, %eax imull $0x01010101,%eax pushw %cx shrw $2, %cx rep; stosl popw %cx andw $3, %cx rep; stosb popw %di ret .size memset, .-memset .globl copy_from_fs .type copy_from_fs, @function copy_from_fs: pushw %ds pushw %fs popw %ds call memcpy popw %ds ret .size copy_from_fs, .-copy_from_fs .globl copy_to_fs .type copy_to_fs, @function copy_to_fs: pushw %es pushw %fs popw %es call memcpy popw %es ret .size copy_to_fs, .-copy_to_fs #if 0 /* Not currently used, but can be enabled as needed */ .globl copy_from_gs .type copy_from_gs, @function copy_from_gs: pushw %ds pushw %gs popw %ds call memcpy popw %ds ret .size copy_from_gs, .-copy_from_gs .globl copy_to_gs .type copy_to_gs, @function copy_to_gs: pushw %es pushw %gs popw %es call memcpy popw %es ret .size copy_to_gs, .-copy_to_gs #endif