runtime/cgo: save and restore X3 (aka GP) for crosscall1 on riscv64
runtime/cgo: save and restore X3 (aka GP) for crosscall1 on riscv64

The C code that is calling crosscall1 may depend on the GP register, which Go code
will currently clobber. Save and restore both X3 (aka GP) and X4 (aka TP) in this
code path (note that the Go code does not currently clobber X4, however there is
minimal downside to saving and restoring it here, which then also matches crosscall2).

Updates #47100

Change-Id: Icbb706d7889d5dc59de3efb2b510fa6ea2069496
Reviewed-on: https://go-review.googlesource.com/c/go/+/334870
Trust: Joel Sing <4816dabf8db1bc6cac35b3a24cab2ff844b5b0c7@sing.id.au>
Trust: Meng Zhuo <3e6d300a356a3b86bc195677414a9ec5508ca893@golangcn.org>
Reviewed-by: Meng Zhuo <3e6d300a356a3b86bc195677414a9ec5508ca893@golangcn.org>
Reviewed-by: Ian Lance Taylor <87e9c6d529889242b7e184afb632328636553ab4@golang.org>
Run-TryBot: Meng Zhuo <3e6d300a356a3b86bc195677414a9ec5508ca893@golangcn.org>

cloudflare/go,cloudflare/go,golang/go,CAFxX/go,nawawi/go,CAFxX/go,cloudflare/go,CAFxX/go,cloudflare/go,golang/go,CAFxX/go,cloudflare/go,golang/go,cloudflare/go,nawawi/go,CAFxX/go,golang/go,nawawi/go,cloudflare/go,golang/go,cloudflare/go,CAFxX/go,CAFxX/go,golang/go,golang/go,CAFxX/go,nawawi/go,nawawi/go,nawawi/go,nawawi/go,golang/go,nawawi/go