Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sparc/lib/M7copy_to_user.S
26424 views
1
/*
2
* M7copy_to_user.S: SPARC M7 optimized copy to userspace.
3
*
4
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
5
*/
6
7
8
#define EX_ST(x, y) \
9
98: x; \
10
.section __ex_table,"a"; \
11
.align 4; \
12
.word 98b, y; \
13
.text; \
14
.align 4;
15
16
#define EX_ST_FP(x, y) \
17
98: x; \
18
.section __ex_table,"a"; \
19
.align 4; \
20
.word 98b, y##_fp; \
21
.text; \
22
.align 4;
23
24
25
#ifndef ASI_AIUS
26
#define ASI_AIUS 0x11
27
#endif
28
29
#ifndef ASI_BLK_INIT_QUAD_LDD_AIUS
30
#define ASI_BLK_INIT_QUAD_LDD_AIUS 0x23
31
#endif
32
33
#define FUNC_NAME M7copy_to_user
34
#define STORE(type,src,addr) type##a src, [addr] %asi
35
#define STORE_ASI ASI_BLK_INIT_QUAD_LDD_AIUS
36
#define STORE_MRU_ASI ASI_ST_BLKINIT_MRU_S
37
#define EX_RETVAL(x) 0
38
39
#ifdef __KERNEL__
40
/* Writing to %asi is _expensive_ so we hardcode it.
41
* Reading %asi to check for KERNEL_DS is comparatively
42
* cheap.
43
*/
44
#define PREAMBLE \
45
rd %asi, %g1; \
46
cmp %g1, ASI_AIUS; \
47
bne,pn %icc, raw_copy_in_user; \
48
nop
49
#endif
50
51
#include "M7memcpy.S"
52
53