__get_user_asm_ll32 contains a junk move %0, $0 left over from an older version of the code. Ignoring fixups code and data this instruction inflates the normal path in __get_user() by 50% which may explain much of the size and performance you have meassures. It also always clears the error return, iow. __get_user_asm_ll32(..., &<something 64-bit>) would never have returned an error. ARGH. Ralf