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