On Wed, Nov 09, 2022 at 04:46:29PM +0100, Janis Schoetterl-Glausch wrote:
On Wed, 2022-11-02 at 15:19 +0100, Heiko Carstens wrote:
- case 1: {
unsigned int prev, tmp, shift;shift = (3 ^ (address & 3)) << 3;address ^= address & 3;asm volatile(" spka 0(%[key])\n"" sacf 256\n""0: l %[prev],%[address]\n""1: nr %[prev],%[mask]\n"" lr %[tmp],%[prev]\n"" or %[prev],%[old]\n"" or %[tmp],%[new]\n""2: cs %[prev],%[tmp],%[address]\n""3: jnl 4f\n"" xr %[tmp],%[prev]\n"" nr %[tmp],%[mask]\n"Are you only entertaining cosmetic changes to cmpxchg.h?
I fail to parse what you are trying to say. Please elaborate.
The loop condition being imprecise seems non-ideal.
What exactly is imprecise?
[key] "a" (key),Why did you get rid of the << 4 shift? That's inconsistent with the other uaccess functions that take an access key.
That's not only inconsistent, but also a bug. Thank you for pointing this out. Will be fixed.