tech-kern archive

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

Use of the PC value in interrupt/exception handlers

Dear all,

We are working on developing a dynamic binary translator for the kernel.
Towards this, we wanted to confirm if the interrupted PC value pushed on
stack by an interrupt/exception is used by the interrupt/exception handlers?
For example, is the PC value compared against a fixed address to determine
the handler behaviour (like Linux's page fault handler compares the faulting
PC against an exception table, to allow functions like copy_from_user to fault).

Basically, we are wondering if it is safe to replace the pushed PC value on
stack by another value. This would be safe if the PC value is only used for
returning from interrupt, or for reading contents at that PC address (e.g.,
to decode the instruction at current PC). It would be unsafe if the value of
the address itself is meaningful to the handler.

We found that in NetBSD only trace-exception-handler checks the trapped PC
value against some fixed kernel PC by looking at the code which is used for
debugging purposes. It would be nice if somebody could also confirm this.


Home | Main Index | Thread Index | Old Index