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