linux/arch/sparc/lib/NG2copy_to_user.S
<<
>>
Prefs
   1/* NG2copy_to_user.S: Niagara-2 optimized copy to userspace.
   2 *
   3 * Copyright (C) 2007 David S. Miller (davem@davemloft.net)
   4 */
   5
   6#define EX_ST(x)                \
   798:     x;                      \
   8        .section __ex_table,"a";\
   9        .align 4;               \
  10        .word 98b, __retl_one_asi;\
  11        .text;                  \
  12        .align 4;
  13
  14#ifndef ASI_AIUS
  15#define ASI_AIUS        0x11
  16#endif
  17
  18#ifndef ASI_BLK_AIUS_4V
  19#define ASI_BLK_AIUS_4V 0x17
  20#endif
  21
  22#ifndef ASI_BLK_INIT_QUAD_LDD_AIUS
  23#define ASI_BLK_INIT_QUAD_LDD_AIUS 0x23
  24#endif
  25
  26#define FUNC_NAME               NG2copy_to_user
  27#define STORE(type,src,addr)    type##a src, [addr] ASI_AIUS
  28#define STORE_ASI               ASI_BLK_INIT_QUAD_LDD_AIUS
  29#define STORE_BLK(src,addr)     stda src, [addr] ASI_BLK_AIUS_4V
  30#define EX_RETVAL(x)            0
  31
  32#ifdef __KERNEL__
  33        /* Writing to %asi is _expensive_ so we hardcode it.
  34         * Reading %asi to check for KERNEL_DS is comparatively
  35         * cheap.
  36         */
  37#define PREAMBLE                                        \
  38        rd              %asi, %g1;                      \
  39        cmp             %g1, ASI_AIUS;                  \
  40        bne,pn          %icc, ___copy_in_user;          \
  41         nop
  42#endif
  43
  44#include "NG2memcpy.S"
  45