I found that get_insn_opcode(in traps.c) is broken. static inline int get_insn_opcode(struct pt_regs *regs, unsigned int *opcode) ... if (!get_user(opcode, epc)) This must be: static inline int get_insn_opcode(struct pt_regs *regs, unsigned int *opcode) ... if (!get_user(*opcode, epc)) Without this fix, ll/sc emulation might not work. --- Atsushi Nemoto