| 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 | |
| 9 | |
| 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 |
|
| 20 | ENTRY(__vmrte)
|
| 21 | trap1(#HVM_TRAP1_VMRTE);
|
| 22 | jumpr R31;
|
| 23 |
|
| 24 | ENTRY(__vmsetvec)
|
| 25 | trap1(#HVM_TRAP1_VMSETVEC);
|
| 26 | jumpr R31;
|
| 27 |
|
| 28 | ENTRY(__vmsetie)
|
| 29 | trap1(#HVM_TRAP1_VMSETIE);
|
| 30 | jumpr R31;
|
| 31 |
|
| 32 | ENTRY(__vmgetie)
|
| 33 | trap1(#HVM_TRAP1_VMGETIE);
|
| 34 | jumpr R31;
|
| 35 |
|
| 36 | ENTRY(__vmintop)
|
| 37 | trap1(#HVM_TRAP1_VMINTOP);
|
| 38 | jumpr R31;
|
| 39 |
|
| 40 | ENTRY(__vmclrmap)
|
| 41 | trap1(#HVM_TRAP1_VMCLRMAP);
|
| 42 | jumpr R31;
|
| 43 |
|
| 44 | ENTRY(__vmnewmap)
|
| 45 | r1 = #VM_NEWMAP_TYPE_PGTABLES;
|
| 46 | trap1(#HVM_TRAP1_VMNEWMAP);
|
| 47 | jumpr R31;
|
| 48 |
|
| 49 | ENTRY(__vmcache)
|
| 50 | trap1(#HVM_TRAP1_VMCACHE);
|
| 51 | jumpr R31;
|
| 52 |
|
| 53 | ENTRY(__vmgettime)
|
| 54 | trap1(#HVM_TRAP1_VMGETTIME);
|
| 55 | jumpr R31;
|
| 56 |
|
| 57 | ENTRY(__vmsettime)
|
| 58 | trap1(#HVM_TRAP1_VMSETTIME);
|
| 59 | jumpr R31;
|
| 60 |
|
| 61 | ENTRY(__vmwait)
|
| 62 | trap1(#HVM_TRAP1_VMWAIT);
|
| 63 | jumpr R31;
|
| 64 |
|
| 65 | ENTRY(__vmyield)
|
| 66 | trap1(#HVM_TRAP1_VMYIELD);
|
| 67 | jumpr R31;
|
| 68 |
|
| 69 | ENTRY(__vmstart)
|
| 70 | trap1(#HVM_TRAP1_VMSTART);
|
| 71 | jumpr R31;
|
| 72 |
|
| 73 | ENTRY(__vmstop)
|
| 74 | trap1(#HVM_TRAP1_VMSTOP);
|
| 75 | jumpr R31;
|
| 76 |
|
| 77 | ENTRY(__vmvpid)
|
| 78 | trap1(#HVM_TRAP1_VMVPID);
|
| 79 | jumpr R31;
|
| 80 |
|
| 81 | /* Probably not actually going to use these; see vm_entry.S */
|
| 82 |
|
| 83 | ENTRY(__vmsetregs)
|
| 84 | trap1(#HVM_TRAP1_VMSETREGS);
|
| 85 | jumpr R31;
|
| 86 |
|
| 87 | ENTRY(__vmgetregs)
|
| 88 | trap1(#HVM_TRAP1_VMGETREGS);
|
| 89 | jumpr R31;
|