[PATCH] x86_64: allow setting RF in EFLAGS

Setting RF (resume flag) allows a debugger to resume execution after a code
breakpoint without tripping the breakpoint again. It is reset by the CPU
after executing one instruction.

Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Chuck Ebbert and committed by
Linus Torvalds
60923df3 100c0e36

+12 -6
+6 -3
arch/x86_64/ia32/ptrace32.c
··· 28 #include <asm/i387.h> 29 #include <asm/fpu32.h> 30 31 - /* determines which flags the user has access to. */ 32 - /* 1 = access 0 = no access */ 33 - #define FLAG_MASK 0x44dd5UL 34 35 #define R32(l,q) \ 36 case offsetof(struct user32, regs.l): stack[offsetof(struct pt_regs, q)/8] = val; break
··· 28 #include <asm/i387.h> 29 #include <asm/fpu32.h> 30 31 + /* 32 + * Determines which flags the user has access to [1 = access, 0 = no access]. 33 + * Prohibits changing ID(21), VIP(20), VIF(19), VM(17), IOPL(12-13), IF(9). 34 + * Also masks reserved bits (31-22, 15, 5, 3, 1). 35 + */ 36 + #define FLAG_MASK 0x54dd5UL 37 38 #define R32(l,q) \ 39 case offsetof(struct user32, regs.l): stack[offsetof(struct pt_regs, q)/8] = val; break
+6 -3
arch/x86_64/kernel/ptrace.c
··· 36 * in exit.c or in signal.c. 37 */ 38 39 - /* determines which flags the user has access to. */ 40 - /* 1 = access 0 = no access */ 41 - #define FLAG_MASK 0x44dd5UL 42 43 /* set's the trap flag. */ 44 #define TRAP_FLAG 0x100UL
··· 36 * in exit.c or in signal.c. 37 */ 38 39 + /* 40 + * Determines which flags the user has access to [1 = access, 0 = no access]. 41 + * Prohibits changing ID(21), VIP(20), VIF(19), VM(17), IOPL(12-13), IF(9). 42 + * Also masks reserved bits (63-22, 15, 5, 3, 1). 43 + */ 44 + #define FLAG_MASK 0x54dd5UL 45 46 /* set's the trap flag. */ 47 #define TRAP_FLAG 0x100UL