aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/ifuzz
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/ifuzz')
-rw-r--r--pkg/ifuzz/powerpc/pseudo.go13
1 files changed, 12 insertions, 1 deletions
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()))
}