unprivileged use of MSR_SE

Roland McGrath roland at redhat.com
Thu Mar 20 11:24:07 EST 2008


Are there any powerpc instructions that can read or change the MSR
explicitly from user mode?  Any that can see or affect the MSR_SE bit?

e.g. x86 has pushf/popf unprivileged instructions, with which a user
program can both see the single-step flag set, and enable single-step for
its own next instruction (presumably when it has a handler for SIGTRAP).
This actually gets used in arcane places.

I recall being told before there's no unprivileged way to see or touch
MSR_SE.  But it looks to me like a user program can set the bit in a
sigcontext and sigreturn to set it.  Is that intentionally supported?
Or could sigreturn ignore the MSR_SE bit without breaking any strange user?

On x86 do we some machinations so that PTRACE_GETREGS et al show the
single-step bit set if user-mode itself had set it, but not if
PTRACE_SINGLESTEP set it.  If you use PTRACE_SETREGS et al to set the
single-step bit, then it stays set even if you use PTRACE_CONT.

I'd like to clean this up for powerpc too.  If there is no way at all for
user-mode to set MSR_SE, then it doesn't much matter whether it shows up
when ptrace reads it--ptrace just needs to ignore attempts to set it.  So
if there's no reason not to, what I would do is remove MSR_SE from the
MSR_DEBUGCHANGE mask and make sigreturn always clear MSR_SE.

Does that make sense?


Thanks,
Roland



More information about the Linuxppc-dev mailing list