hugetlb: introduce generic version of hugetlb_free_pgd_range
[linux/fpc-iii.git] / arch / x86 / boot / copy.S
blob15d9f74b000863ba3d11c38b81b4df1761a9d532
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  * ----------------------------------------------------------------------- */
11 #include <linux/linkage.h>
14  * Memory copy routines
15  */
17         .code16
18         .text
20 GLOBAL(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
34 ENDPROC(memcpy)
36 GLOBAL(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
49 ENDPROC(memset)
51 GLOBAL(copy_from_fs)
52         pushw   %ds
53         pushw   %fs
54         popw    %ds
55         calll   memcpy
56         popw    %ds
57         retl
58 ENDPROC(copy_from_fs)
60 GLOBAL(copy_to_fs)
61         pushw   %es
62         pushw   %fs
63         popw    %es
64         calll   memcpy
65         popw    %es
66         retl
67 ENDPROC(copy_to_fs)