1*b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 2cf5adce1SDavid S. Miller/* NG2copy_from_user.S: Niagara-2 optimized copy from userspace. 3cf5adce1SDavid S. Miller * 4cf5adce1SDavid S. Miller * Copyright (C) 2007 David S. Miller (davem@davemloft.net) 5cf5adce1SDavid S. Miller */ 6cf5adce1SDavid S. Miller 7e93704e4SDavid S. Miller#define EX_LD(x,y) \ 8cf5adce1SDavid S. Miller98: x; \ 9cf5adce1SDavid S. Miller .section __ex_table,"a";\ 10cf5adce1SDavid S. Miller .align 4; \ 11e93704e4SDavid S. Miller .word 98b, y; \ 12cf5adce1SDavid S. Miller .text; \ 13cf5adce1SDavid S. Miller .align 4; 14cf5adce1SDavid S. Miller 15e93704e4SDavid S. Miller#define EX_LD_FP(x,y) \ 16a7c5724bSRob Gardner98: x; \ 17a7c5724bSRob Gardner .section __ex_table,"a";\ 18a7c5724bSRob Gardner .align 4; \ 19e93704e4SDavid S. Miller .word 98b, y##_fp; \ 20a7c5724bSRob Gardner .text; \ 21a7c5724bSRob Gardner .align 4; 22a7c5724bSRob Gardner 23cf5adce1SDavid S. Miller#ifndef ASI_AIUS 24cf5adce1SDavid S. Miller#define ASI_AIUS 0x11 25cf5adce1SDavid S. Miller#endif 26cf5adce1SDavid S. Miller 27cf5adce1SDavid S. Miller#ifndef ASI_BLK_AIUS_4V 28cf5adce1SDavid S. Miller#define ASI_BLK_AIUS_4V 0x17 29cf5adce1SDavid S. Miller#endif 30cf5adce1SDavid S. Miller 31cf5adce1SDavid S. Miller#define FUNC_NAME NG2copy_from_user 32cf5adce1SDavid S. Miller#define LOAD(type,addr,dest) type##a [addr] %asi, dest 33cf5adce1SDavid S. Miller#define LOAD_BLK(addr,dest) ldda [addr] ASI_BLK_AIUS_4V, dest 34cf5adce1SDavid S. Miller#define EX_RETVAL(x) 0 35cf5adce1SDavid S. Miller 36cf5adce1SDavid S. Miller#ifdef __KERNEL__ 37cf5adce1SDavid S. Miller#define PREAMBLE \ 38cf5adce1SDavid S. Miller rd %asi, %g1; \ 39cf5adce1SDavid S. Miller cmp %g1, ASI_AIUS; \ 4031af2f36SAl Viro bne,pn %icc, raw_copy_in_user; \ 41cf5adce1SDavid S. Miller nop 42cf5adce1SDavid S. Miller#endif 43cf5adce1SDavid S. Miller 44cf5adce1SDavid S. Miller#include "NG2memcpy.S" 45