1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Hexagon VM instruction support
4 *
5 * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
6 */
7
8#include <linux/linkage.h>
9#include <asm/hexagon_vm.h>
10
11/*
12 * C wrappers for virtual machine "instructions". These
13 * could be, and perhaps some day will be, handled as in-line
14 * macros, but for tracing/debugging it's handy to have
15 * a single point of invocation for each of them.
16 * Conveniently, they take parameters and return values
17 * consistent with the ABI calling convention.
18 */
19
20ENTRY(__vmrte)
21 trap1(#HVM_TRAP1_VMRTE);
22 jumpr R31;
23
24ENTRY(__vmsetvec)
25 trap1(#HVM_TRAP1_VMSETVEC);
26 jumpr R31;
27
28ENTRY(__vmsetie)
29 trap1(#HVM_TRAP1_VMSETIE);
30 jumpr R31;
31
32ENTRY(__vmgetie)
33 trap1(#HVM_TRAP1_VMGETIE);
34 jumpr R31;
35
36ENTRY(__vmintop)
37 trap1(#HVM_TRAP1_VMINTOP);
38 jumpr R31;
39
40ENTRY(__vmclrmap)
41 trap1(#HVM_TRAP1_VMCLRMAP);
42 jumpr R31;
43
44ENTRY(__vmnewmap)
45 r1 = #VM_NEWMAP_TYPE_PGTABLES;
46 trap1(#HVM_TRAP1_VMNEWMAP);
47 jumpr R31;
48
49ENTRY(__vmcache)
50 trap1(#HVM_TRAP1_VMCACHE);
51 jumpr R31;
52
53ENTRY(__vmgettime)
54 trap1(#HVM_TRAP1_VMGETTIME);
55 jumpr R31;
56
57ENTRY(__vmsettime)
58 trap1(#HVM_TRAP1_VMSETTIME);
59 jumpr R31;
60
61ENTRY(__vmwait)
62 trap1(#HVM_TRAP1_VMWAIT);
63 jumpr R31;
64
65ENTRY(__vmyield)
66 trap1(#HVM_TRAP1_VMYIELD);
67 jumpr R31;
68
69ENTRY(__vmstart)
70 trap1(#HVM_TRAP1_VMSTART);
71 jumpr R31;
72
73ENTRY(__vmstop)
74 trap1(#HVM_TRAP1_VMSTOP);
75 jumpr R31;
76
77ENTRY(__vmvpid)
78 trap1(#HVM_TRAP1_VMVPID);
79 jumpr R31;
80
81/* Probably not actually going to use these; see vm_entry.S */
82
83ENTRY(__vmsetregs)
84 trap1(#HVM_TRAP1_VMSETREGS);
85 jumpr R31;
86
87ENTRY(__vmgetregs)
88 trap1(#HVM_TRAP1_VMGETREGS);
89 jumpr R31;
90

source code of linux/arch/hexagon/kernel/vm_ops.S