1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 2478b8fecSSam Ravnborg/* NGcopy_to_user.S: Niagara optimized copy to userspace. 3478b8fecSSam Ravnborg * 4478b8fecSSam Ravnborg * Copyright (C) 2006, 2007 David S. Miller (davem@davemloft.net) 5478b8fecSSam Ravnborg */ 6478b8fecSSam Ravnborg 77ae3aaf5SDavid S. Miller#define EX_ST(x,y) \ 8478b8fecSSam Ravnborg98: x; \ 9478b8fecSSam Ravnborg .section __ex_table,"a";\ 10478b8fecSSam Ravnborg .align 4; \ 117ae3aaf5SDavid 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 NGcopy_to_user 20478b8fecSSam Ravnborg#define STORE(type,src,addr) type##a src, [addr] ASI_AIUS 21478b8fecSSam Ravnborg#define STORE_ASI ASI_BLK_INIT_QUAD_LDD_AIUS 22478b8fecSSam Ravnborg#define EX_RETVAL(x) %g0 23478b8fecSSam Ravnborg 24478b8fecSSam Ravnborg#ifdef __KERNEL__ 25478b8fecSSam Ravnborg /* Writing to %asi is _expensive_ so we hardcode it. 26478b8fecSSam Ravnborg * Reading %asi to check for KERNEL_DS is comparatively 27478b8fecSSam Ravnborg * cheap. 28478b8fecSSam Ravnborg */ 29478b8fecSSam Ravnborg#define PREAMBLE \ 30478b8fecSSam Ravnborg rd %asi, %g1; \ 31478b8fecSSam Ravnborg cmp %g1, ASI_AIUS; \ 3231af2f36SAl Viro bne,pn %icc, raw_copy_in_user; \ 33478b8fecSSam Ravnborg nop 34478b8fecSSam Ravnborg#endif 35478b8fecSSam Ravnborg 36478b8fecSSam Ravnborg#include "NGmemcpy.S" 37