[PARISC] Add ability for prctl to change unaligned trap behaviour
Add support for changing unaligned trap behaviour on a per-thread basis. Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
This commit is contained in:
@@ -513,15 +513,18 @@ void handle_unaligned(struct pt_regs *regs)
|
||||
register int flop=0; /* true if this is a flop */
|
||||
|
||||
/* log a message with pacing */
|
||||
if (user_mode(regs))
|
||||
{
|
||||
if (unaligned_count > 5 && jiffies - last_time > 5*HZ)
|
||||
{
|
||||
if (user_mode(regs)) {
|
||||
if (current->thread.flags & PARISC_UAC_SIGBUS) {
|
||||
goto force_sigbus;
|
||||
}
|
||||
|
||||
if (unaligned_count > 5 && jiffies - last_time > 5*HZ) {
|
||||
unaligned_count = 0;
|
||||
last_time = jiffies;
|
||||
}
|
||||
if (++unaligned_count < 5)
|
||||
{
|
||||
|
||||
if (!(current->thread.flags & PARISC_UAC_NOPRINT)
|
||||
&& ++unaligned_count < 5) {
|
||||
char buf[256];
|
||||
sprintf(buf, "%s(%d): unaligned access to 0x" RFMT " at ip=0x" RFMT "\n",
|
||||
current->comm, current->pid, regs->ior, regs->iaoq[0]);
|
||||
@@ -530,6 +533,7 @@ void handle_unaligned(struct pt_regs *regs)
|
||||
show_regs(regs);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!unaligned_enabled)
|
||||
goto force_sigbus;
|
||||
}
|
||||
|
Reference in New Issue
Block a user