tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Expected behavior when returning from a SIGFPE handler



> But the x86_64 code appears to return to the same instruction, banging its h$

> It's my belief that the alpha behavior is more desirable.

> Please, discuss.

I could argue that either way.

In some cases, you want to re-execute the instruction.  A simple
example is "FPU disabled" on architectures that have such a notion, eg
for lazy FPU switching.

In some cases, you don't want to.  An example might be soft-float, or
partial soft-float (such as, emulation of cases the hardware doesn't
handle).

On architectures like SPARC or, I think - you'd know better than I -
Alpha, where there are very few possible instruction sizes, sometimes
as few as just one, advancing past the instruction in the trap handler
is easy even if you have to do it in software.  On others, like the
VAX, it's a right pain to do in software.  On the latter sort, ideally,
the hardware would give you both the PC to use to re-execute the
instruction and the PC to use to skip the instruction, letting the trap
handler choose, but I'm not aware of any architecture that does that.
(The closest I'm aware of is, ironically, the SPARC, on which advancing
past an instruction in software is about as simple as it gets - but it
has both PC and next-PC in hardware, though admittedly for other
reasons.)

I see no clear single right answer here.

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		mouse%rodents-montreal.org@localhost
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index