freebsd-nq/sys/ia64
Marcel Moolenaar c31450b00d Handle B-unit break instructions. The break.b is unique in that the
immediate is not saved by the architecture. Any of the break.{mifx}
instructions have their immediate saved in cr.iim on interruption.
Consequently, when we handle the break interrupt, we end up with a
break value of 0 when it was a break.b. The immediate is important
because it distinguishes between different uses of the break and
which are defined by the runtime specification.
The bottomline is that when the GNU debugger replaces a B-unit
instruction with a break instruction in the inferior, we would not
send the process a SIGTRAP when we encounter it, because the value
is not one we recognize as a debugger breakpoint.

This change adds logic to decode the bundle in which the break
instruction lives whenever the break value is 0. The assumption
being that it's a break.b and we fetch the immediate directly out
of the instruction. If the break instruction was not a break.b,
but any of break.{mifx} with an immediate of 0, we would be doing
unnecessary work. But since a break 0 is invalid, this is not a
problem and it will still result in a SIGILL being sent to the
process.

Approved by: re (scottl)
2005-06-27 23:51:38 +00:00
..
acpica Move the code for halting the CPU (acpi_cpu_c1) into machdep files. 2004-10-11 05:39:15 +00:00
compile
conf Add .cvsignore files just like in sys/<arch>/compiled, this keeps CVS from 2005-06-20 16:52:59 +00:00
disasm /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
ia32 Use PCPU_LAZY_INC() for cnt.v_{intr,trap,syscalls} rather than atomic 2005-04-12 23:18:54 +00:00
ia64 Handle B-unit break instructions. The break.b is unique in that the 2005-06-27 23:51:38 +00:00
include Define IPI_PREEMPT. Update a nearby comment while I'm here. 2005-06-12 19:03:01 +00:00
isa - Move bus dependent defines to {isa,cbus}_dmareg.h. 2005-05-14 10:14:56 +00:00
pci