37818afd15
GLOBAL is an x86's custom macro and is going to die very soon. It was meant for global symbols, but here, it was used for functions. Instead, use the new macros SYM_FUNC_START* and SYM_CODE_START* (depending on the type of the function) which are dedicated to global functions. And since they both require a closing by SYM_*_END, do that here too. startup_64, which does not use GLOBAL but uses .globl explicitly, is converted too. "No alignments" are preserved. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Borislav Petkov <bp@suse.de> Cc: Allison Randal <allison@lohutok.net> Cc: Andy Lutomirski <luto@kernel.org> Cc: Cao jin <caoj.fnst@cn.fujitsu.com> Cc: Enrico Weigelt <info@metux.net> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Juergen Gross <jgross@suse.com> Cc: Kate Stewart <kstewart@linuxfoundation.org> Cc: linux-arch@vger.kernel.org Cc: Maran Wilson <maran.wilson@oracle.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: x86-ml <x86@kernel.org> Link: https://lkml.kernel.org/r/20191011115108.12392-17-jslaby@suse.cz
66 lines
1.0 KiB
ArmAsm
66 lines
1.0 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/* ----------------------------------------------------------------------- *
|
|
*
|
|
* Copyright (C) 1991, 1992 Linus Torvalds
|
|
* Copyright 2007 rPath, Inc. - All Rights Reserved
|
|
*
|
|
* ----------------------------------------------------------------------- */
|
|
|
|
#include <linux/linkage.h>
|
|
|
|
/*
|
|
* Memory copy routines
|
|
*/
|
|
|
|
.code16
|
|
.text
|
|
|
|
SYM_FUNC_START_NOALIGN(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
|
|
retl
|
|
SYM_FUNC_END(memcpy)
|
|
|
|
SYM_FUNC_START_NOALIGN(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
|
|
retl
|
|
SYM_FUNC_END(memset)
|
|
|
|
SYM_FUNC_START_NOALIGN(copy_from_fs)
|
|
pushw %ds
|
|
pushw %fs
|
|
popw %ds
|
|
calll memcpy
|
|
popw %ds
|
|
retl
|
|
SYM_FUNC_END(copy_from_fs)
|
|
|
|
SYM_FUNC_START_NOALIGN(copy_to_fs)
|
|
pushw %es
|
|
pushw %fs
|
|
popw %es
|
|
calll memcpy
|
|
popw %es
|
|
retl
|
|
SYM_FUNC_END(copy_to_fs)
|