]> Cypherpunks repositories - gostls13.git/commit
cmd/internal/obj/arm64: add error checking for system registers.
authordiaxu01 <dianhong.xu@arm.com>
Wed, 21 Aug 2019 09:31:35 +0000 (09:31 +0000)
committerCherry Zhang <cherryyz@google.com>
Tue, 8 Oct 2019 16:20:53 +0000 (16:20 +0000)
commit9ce5cad0aaf5eceda6927acec2db96ba5fd7ef07
treee1e31e9e237ea1e156e9b93390f5bd73d2764f11
parentd458b868360c0e223979951dd4b6ce3ce92cfd68
cmd/internal/obj/arm64: add error checking for system registers.

This CL adds system register error checking test cases. There're two kinds of
error test cases:

1. illegal combination.
MRS should be used in this way: MRS <system register>, <general register>.
MSR should be used in this way: MSR <general register>, <system register>.
Error usage examples:
MRS     R8, VTCR_EL2    // ERROR "illegal combination"
MSR     VTCR_EL2, R8    // ERROR "illegal combination"

2. illegal read or write access.
Error usage examples:
MSR     R7, MIDR_EL1    // ERROR "expected writable system register or pstate"
MRS     OSLAR_EL1, R3   // ERROR "expected readable system register"

This CL reads system registers readable and writeable property to check whether
they're used with legal read or write access. This property is named AccessFlags
in sysRegEnc.go, and it is automatically generated by modifing the system register
generator.

Change-Id: Ic83d5f372de38d1ecd0df1ca56b354ee157f16b4
Reviewed-on: https://go-review.googlesource.com/c/go/+/194917
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/cmd/asm/internal/asm/testdata/arm64.s
src/cmd/asm/internal/asm/testdata/arm64error.s
src/cmd/internal/obj/arm64/a.out.go
src/cmd/internal/obj/arm64/asm7.go
src/cmd/internal/obj/arm64/list7.go
src/cmd/internal/obj/arm64/sysRegEnc.go