| // Copyright 2021 syzkaller project authors. All rights reserved. |
| // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. |
| |
| // kvm_gen.cc generates machine code from this file and saves it into kvm_ppc64le.S.h. |
| |
| // +build |
| |
| #include "kvm.h" |
| |
| #define LOAD64(rn,name) \ |
| lis rn,name##@highest; \ |
| ori rn,rn,name##@higher; \ |
| rldicr rn,rn,32,31; \ |
| oris rn,rn,name##@h; \ |
| ori rn,rn,name##@l |
| |
| .global kvm_ppc64_mr, kvm_ppc64_mr_end |
| kvm_ppc64_mr: |
| LOAD64(5, 0xbadc0de) |
| mr 4,5 |
| mr 3,4 |
| kvm_ppc64_mr_end: |
| |
| .global kvm_ppc64_ld, kvm_ppc64_ld_end |
| kvm_ppc64_ld: |
| LOAD64(15, 0xbadc0de) |
| // Last double word of vma[24] |
| LOAD64(25, 24 * 0x10000 - 8) |
| std 15, 0(25) |
| ld 3, 0(25) |
| kvm_ppc64_ld_end: |
| |
| .global kvm_ppc64_recharge_dec, kvm_ppc64_recharge_dec_end |
| kvm_ppc64_recharge_dec: |
| LOAD64(20,0x7ffffff) |
| #define SPRN_DEC 0x016 /* Decrement Register */ |
| mtspr SPRN_DEC,20 |
| rfid |
| kvm_ppc64_recharge_dec_end: |