OK, sorry if I wasn't clear. I understand the mechanism with the library call, but what I don't, is why the code below, where the load exclusive establishes the address reservation and we do it until the store exclusive succeed doesn't fix the problem.
1: LDREX r2, [r0] STREX r1, r2, [r0] TEQ r1, #0 BNE 1b
Cheers, Yvan
It's a correctness issue on ARM. It won't work till the architecture changes. If it isn't correct, there's no point being fast :) . Taking off list as I wasn't a 100% sure what you meant there.
If you really need something like that you'll need a library call and the library call deals with it by doing an atomic access of the correspondingly rounded up size from an appropriately rounded down address.
regards, Ramana