aboutsummaryrefslogtreecommitdiffstats
path: root/sysgen
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-01-05 14:16:07 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-01-09 20:20:48 +0100
commit94b38efc1d80ae2854d29af44c6d5918a2cb40cd (patch)
tree401943d29621eeb485b016e74e3062178091e12a /sysgen
parentb5aa8b45061e01c79cf78fe3a634abf5dc6d3f46 (diff)
sys: allow to specify number of pages for vma type
Allows to write vma[4] or vma[5-10] to specify desired number of pages.
Diffstat (limited to 'sysgen')
-rw-r--r--sysgen/sysgen.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/sysgen/sysgen.go b/sysgen/sysgen.go
index 92258150d..d16841577 100644
--- a/sysgen/sysgen.go
+++ b/sysgen/sysgen.go
@@ -461,10 +461,15 @@ func generateArg(
fmt.Fprintf(out, "&BufferType{%v, Kind: BufferAlgName}", common())
case "vma":
canBeArg = true
- if want := 0; len(a) != want {
- failf("wrong number of arguments for %v arg %v, want %v, got %v", typ, name, want, len(a))
+ begin, end := "0", "0"
+ switch len(a) {
+ case 0:
+ case 1:
+ begin, end = parseRange(a[0], consts)
+ default:
+ failf("wrong number of arguments for %v arg %v, want 0 or 1, got %v", typ, name, len(a))
}
- fmt.Fprintf(out, "&VmaType{%v}", common())
+ fmt.Fprintf(out, "&VmaType{%v, RangeBegin: %v, RangeEnd: %v}", common(), begin, end)
case "len", "bytesize", "bytesize2", "bytesize4", "bytesize8":
canBeArg = true
size := uint64(ptrSize)