1*b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 2478b8fecSSam Ravnborg/* GENcopy_to_user.S: Generic sparc64 copy to userspace. 3478b8fecSSam Ravnborg * 4478b8fecSSam Ravnborg * Copyright (C) 2007 David S. Miller (davem@davemloft.net) 5478b8fecSSam Ravnborg */ 6478b8fecSSam Ravnborg 7d0796b55SDavid S. Miller#define EX_ST(x,y) \ 8478b8fecSSam Ravnborg98: x; \ 9478b8fecSSam Ravnborg .section __ex_table,"a";\ 10478b8fecSSam Ravnborg .align 4; \ 11d0796b55SDavid S. Miller .word 98b, y; \ 12478b8fecSSam Ravnborg .text; \ 13478b8fecSSam Ravnborg .align 4; 14478b8fecSSam Ravnborg 15478b8fecSSam Ravnborg#ifndef ASI_AIUS 16478b8fecSSam Ravnborg#define ASI_AIUS 0x11 17478b8fecSSam Ravnborg#endif 18478b8fecSSam Ravnborg 19478b8fecSSam Ravnborg#define FUNC_NAME GENcopy_to_user 20478b8fecSSam Ravnborg#define STORE(type,src,addr) type##a src, [addr] ASI_AIUS 21478b8fecSSam Ravnborg#define EX_RETVAL(x) 0 22478b8fecSSam Ravnborg 23478b8fecSSam Ravnborg#ifdef __KERNEL__ 24478b8fecSSam Ravnborg /* Writing to %asi is _expensive_ so we hardcode it. 25478b8fecSSam Ravnborg * Reading %asi to check for KERNEL_DS is comparatively 26478b8fecSSam Ravnborg * cheap. 27478b8fecSSam Ravnborg */ 28478b8fecSSam Ravnborg#define PREAMBLE \ 29478b8fecSSam Ravnborg rd %asi, %g1; \ 30478b8fecSSam Ravnborg cmp %g1, ASI_AIUS; \ 3131af2f36SAl Viro bne,pn %icc, raw_copy_in_user; \ 32478b8fecSSam Ravnborg nop 33478b8fecSSam Ravnborg#endif 34478b8fecSSam Ravnborg 35478b8fecSSam Ravnborg#include "GENmemcpy.S" 36