/* SPDX-License-Identifier: GPL-2.0-only */1/*2* Hexagon VM instruction support3*4* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.5*/67#include <linux/linkage.h>8#include <asm/hexagon_vm.h>910/*11* C wrappers for virtual machine "instructions". These12* could be, and perhaps some day will be, handled as in-line13* macros, but for tracing/debugging it's handy to have14* a single point of invocation for each of them.15* Conveniently, they take parameters and return values16* consistent with the ABI calling convention.17*/1819ENTRY(__vmrte)20trap1(#HVM_TRAP1_VMRTE);21jumpr R31;2223ENTRY(__vmsetvec)24trap1(#HVM_TRAP1_VMSETVEC);25jumpr R31;2627ENTRY(__vmsetie)28trap1(#HVM_TRAP1_VMSETIE);29jumpr R31;3031ENTRY(__vmgetie)32trap1(#HVM_TRAP1_VMGETIE);33jumpr R31;3435ENTRY(__vmintop)36trap1(#HVM_TRAP1_VMINTOP);37jumpr R31;3839ENTRY(__vmclrmap)40trap1(#HVM_TRAP1_VMCLRMAP);41jumpr R31;4243ENTRY(__vmnewmap)44r1 = #VM_NEWMAP_TYPE_PGTABLES;45trap1(#HVM_TRAP1_VMNEWMAP);46jumpr R31;4748ENTRY(__vmcache)49trap1(#HVM_TRAP1_VMCACHE);50jumpr R31;5152ENTRY(__vmgettime)53trap1(#HVM_TRAP1_VMGETTIME);54jumpr R31;5556ENTRY(__vmsettime)57trap1(#HVM_TRAP1_VMSETTIME);58jumpr R31;5960ENTRY(__vmwait)61trap1(#HVM_TRAP1_VMWAIT);62jumpr R31;6364ENTRY(__vmyield)65trap1(#HVM_TRAP1_VMYIELD);66jumpr R31;6768ENTRY(__vmstart)69trap1(#HVM_TRAP1_VMSTART);70jumpr R31;7172ENTRY(__vmstop)73trap1(#HVM_TRAP1_VMSTOP);74jumpr R31;7576ENTRY(__vmvpid)77trap1(#HVM_TRAP1_VMVPID);78jumpr R31;7980/* Probably not actually going to use these; see vm_entry.S */8182ENTRY(__vmsetregs)83trap1(#HVM_TRAP1_VMSETREGS);84jumpr R31;8586ENTRY(__vmgetregs)87trap1(#HVM_TRAP1_VMGETREGS);88jumpr R31;899091