aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/ifuzz
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@linux.ibm.com>2021-06-01 15:07:38 +1000
committerDmitry Vyukov <dvyukov@google.com>2021-07-19 11:29:36 +0200
commit40c360bea98928f9826762046ddeefad6405ca09 (patch)
tree72e9ef0f61f2cac052e1d86c71f539dd7176a0c4 /pkg/ifuzz
parent8cad1b789fd41ebbae53b5ffd4aefb21b738fdab (diff)
pkg/ifuzz/powerpc: add helper for system call ("sc") instruction
In order to keep all macro instruction helpers together, his moves the "sc" helper to the instruction set next to ld64(). This should not cause any behavioral change. Signed-off-by: Alexey Kardashevskiy <aik@linux.ibm.com>
Diffstat (limited to 'pkg/ifuzz')
-rw-r--r--pkg/ifuzz/powerpc/powerpc.go4
-rw-r--r--pkg/ifuzz/powerpc/pseudo.go14
2 files changed, 14 insertions, 4 deletions
diff --git a/pkg/ifuzz/powerpc/powerpc.go b/pkg/ifuzz/powerpc/powerpc.go
index d87f073b6..2704ae33b 100644
--- a/pkg/ifuzz/powerpc/powerpc.go
+++ b/pkg/ifuzz/powerpc/powerpc.go
@@ -173,3 +173,7 @@ func (imap insnSetMap) ld64(reg uint, v uint64) []byte {
return ret
}
+
+func (imap insnSetMap) sc(lev uint) []byte {
+ return imap["sc"].enc(map[string]uint{"LEV": lev})
+}
diff --git a/pkg/ifuzz/powerpc/pseudo.go b/pkg/ifuzz/powerpc/pseudo.go
index 7529a16fc..91b705b02 100644
--- a/pkg/ifuzz/powerpc/pseudo.go
+++ b/pkg/ifuzz/powerpc/pseudo.go
@@ -9,6 +9,11 @@ import (
"github.com/google/syzkaller/pkg/ifuzz/iset"
)
+const (
+ // Valid hcall humbers at the momemt are: 4..0x450.
+ MaxHcall = 0x450 // MAX_HCALL
+)
+
// nolint:dupl
func (insnset *InsnSet) initPseudo() {
insnset.Insns = append(insnset.Insns, &Insn{
@@ -63,11 +68,12 @@ func (gen *generator) byte(v []byte) {
}
func (gen *generator) sc(lev uint) {
+ imap := gen.imap
+
n := gen.r.Intn(9)
- // Valid hcall humbers at the momemt are: 4..0x450
- gen.byte(gen.imap.ld64(3, uint64(gen.r.Intn(4+(0x450-4)/4))))
+ gen.byte(imap.ld64(3, uint64(gen.r.Intn(4+(MaxHcall-4)/4))))
for i := 4; i < n+4; i++ {
- gen.byte(gen.imap.ld64(uint(i), gen.r.Uint64()))
+ gen.byte(imap.ld64(uint(i), gen.r.Uint64()))
}
- gen.byte(gen.imap["sc"].enc(map[string]uint{"LEV": lev}))
+ gen.byte(imap.sc(lev))
}