aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/csource/generated.go16
-rw-r--r--pkg/ifuzz/powerpc/pseudo.go13
2 files changed, 20 insertions, 9 deletions
diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go
index 5733a9f06..0465913fb 100644
--- a/pkg/csource/generated.go
+++ b/pkg/csource/generated.go
@@ -7595,14 +7595,14 @@ static volatile long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volat
if (kvmppc_set_one_reg(cpufd, KVM_REG_PPC_PID, &pid))
return -1;
#define MAX_HCALL 0x450
- for (unsigned hcall = 4; hcall < MAX_HCALL; hcall += 4) {
- struct kvm_enable_cap cap = {
- .cap = KVM_CAP_PPC_ENABLE_HCALL,
- .flags = 0,
- .args = {hcall, 1},
- };
- ioctl(vmfd, KVM_ENABLE_CAP, &cap);
- }
+ for (unsigned hcall = 4; hcall < MAX_HCALL; hcall += 4)
+ kvm_vm_enable_cap(vmfd, KVM_CAP_PPC_ENABLE_HCALL, hcall, 1);
+
+ for (unsigned hcall = 0xf000; hcall < 0xf810; hcall += 4)
+ kvm_vm_enable_cap(vmfd, KVM_CAP_PPC_ENABLE_HCALL, hcall, 1);
+
+ for (unsigned hcall = 0xef00; hcall < 0xef20; hcall += 4)
+ kvm_vm_enable_cap(vmfd, KVM_CAP_PPC_ENABLE_HCALL, hcall, 1);
kvmppc_define_rtas_kernel_token(vmfd, 1, "ibm,set-xive");
kvmppc_define_rtas_kernel_token(vmfd, 2, "ibm,get-xive");
kvmppc_define_rtas_kernel_token(vmfd, 3, "ibm,int-on");
diff --git a/pkg/ifuzz/powerpc/pseudo.go b/pkg/ifuzz/powerpc/pseudo.go
index c2a1b568f..4790cea9f 100644
--- a/pkg/ifuzz/powerpc/pseudo.go
+++ b/pkg/ifuzz/powerpc/pseudo.go
@@ -81,7 +81,18 @@ func (gen *generator) sc(lev uint) {
imap := gen.imap
n := gen.r.Intn(9)
- gen.byte(imap.ld64(3, uint64(gen.r.Intn(4+(MaxHcall-4)/4))))
+ hcrange := gen.r.Intn(3)
+ offset := 4
+ maxhc := MaxHcall
+ if hcrange == 1 {
+ offset = 0xf000
+ maxhc = 0xf810
+ } else if hcrange == 2 {
+ offset = 0xef00
+ maxhc = 0xef20
+ }
+ hc := gen.r.Intn((maxhc-offset)/4)*4 + offset
+ gen.byte(imap.ld64(3, uint64(hc)))
for i := 4; i < n+4; i++ {
gen.byte(imap.ld64(uint(i), gen.r.Uint64()))
}