Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/powerpc/lib/quad.S
26424 views
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
/*
3
* Quadword loads and stores
4
* for use in instruction emulation.
5
*
6
* Copyright 2017 Paul Mackerras, IBM Corp. <[email protected]>
7
*/
8
9
#include <asm/processor.h>
10
#include <asm/ppc_asm.h>
11
#include <asm/ppc-opcode.h>
12
#include <asm/reg.h>
13
#include <asm/asm-offsets.h>
14
#include <linux/errno.h>
15
16
/* do_lq(unsigned long ea, unsigned long *regs) */
17
_GLOBAL(do_lq)
18
1: lq r6, 0(r3)
19
std r6, 0(r4)
20
std r7, 8(r4)
21
li r3, 0
22
blr
23
2: li r3, -EFAULT
24
blr
25
EX_TABLE(1b, 2b)
26
27
/* do_stq(unsigned long ea, unsigned long val0, unsigned long val1) */
28
_GLOBAL(do_stq)
29
1: stq r4, 0(r3)
30
li r3, 0
31
blr
32
2: li r3, -EFAULT
33
blr
34
EX_TABLE(1b, 2b)
35
36
/* do_lqarx(unsigned long ea, unsigned long *regs) */
37
_GLOBAL(do_lqarx)
38
1: PPC_LQARX(6, 0, 3, 0)
39
std r6, 0(r4)
40
std r7, 8(r4)
41
li r3, 0
42
blr
43
2: li r3, -EFAULT
44
blr
45
EX_TABLE(1b, 2b)
46
47
/* do_stqcx(unsigned long ea, unsigned long val0, unsigned long val1,
48
unsigned int *crp) */
49
50
_GLOBAL(do_stqcx)
51
1: PPC_STQCX(4, 0, 3)
52
mfcr r5
53
stw r5, 0(r6)
54
li r3, 0
55
blr
56
2: li r3, -EFAULT
57
blr
58
EX_TABLE(1b, 2b)
59
60