1*b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 2478b8fecSSam Ravnborg/* U3copy_to_user.S: UltraSparc-III optimized copy to userspace. 3478b8fecSSam Ravnborg * 4478b8fecSSam Ravnborg * Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com) 5478b8fecSSam Ravnborg */ 6478b8fecSSam Ravnborg 7ee841d0aSDavid S. Miller#define EX_ST(x,y) \ 8478b8fecSSam Ravnborg98: x; \ 9478b8fecSSam Ravnborg .section __ex_table,"a";\ 10478b8fecSSam Ravnborg .align 4; \ 11ee841d0aSDavid S. Miller .word 98b, y; \ 12478b8fecSSam Ravnborg .text; \ 13478b8fecSSam Ravnborg .align 4; 14478b8fecSSam Ravnborg 15ee841d0aSDavid S. Miller#define EX_ST_FP(x,y) \ 16a7c5724bSRob Gardner98: x; \ 17a7c5724bSRob Gardner .section __ex_table,"a";\ 18a7c5724bSRob Gardner .align 4; \ 19ee841d0aSDavid S. Miller .word 98b, y##_fp; \ 20a7c5724bSRob Gardner .text; \ 21a7c5724bSRob Gardner .align 4; 22a7c5724bSRob Gardner 23478b8fecSSam Ravnborg#define FUNC_NAME U3copy_to_user 24478b8fecSSam Ravnborg#define STORE(type,src,addr) type##a src, [addr] ASI_AIUS 25478b8fecSSam Ravnborg#define STORE_BLK(src,addr) stda src, [addr] ASI_BLK_AIUS 26478b8fecSSam Ravnborg#define EX_RETVAL(x) 0 27478b8fecSSam Ravnborg 28478b8fecSSam Ravnborg /* Writing to %asi is _expensive_ so we hardcode it. 29478b8fecSSam Ravnborg * Reading %asi to check for KERNEL_DS is comparatively 30478b8fecSSam Ravnborg * cheap. 31478b8fecSSam Ravnborg */ 32478b8fecSSam Ravnborg#define PREAMBLE \ 33478b8fecSSam Ravnborg rd %asi, %g1; \ 34478b8fecSSam Ravnborg cmp %g1, ASI_AIUS; \ 3531af2f36SAl Viro bne,pn %icc, raw_copy_in_user; \ 36478b8fecSSam Ravnborg nop; \ 37478b8fecSSam Ravnborg 38478b8fecSSam Ravnborg#include "U3memcpy.S" 39