blob: 0a177229c49f65a74ab3aa7e97c67b675529c196 [file] [log] [blame]
// 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: