In the ‘p’ struct type defined in the Golang runtime code, there is some padding at the end to avoid false sharing between different ‘p’-type structs. That padding should be at least the size of a cache line to accomplish that. This patch fixes the hardcoded 64-byte padding and makes that the size of a cache line.
On Power, that only worked because the cache line size was wrongly set at 64 bytes. The patch also fixes the cache line size for Power for both big endian and little endian.