summaryrefslogtreecommitdiff
path: root/sys/src/9/omap/trap.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-01-26 17:32:08 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-01-26 17:32:08 +0100
commit43e09c468b4c6562c93c9375a316012e238d21b2 (patch)
tree306aedb0dc3c1bc6f35c26a2a60b07d59fd5647d /sys/src/9/omap/trap.c
parent44eb643cb253eb0743ac69e9aa5073dea3ad232d (diff)
omap: update omap kernel (from sources)
refactors of the usb ehci code and adds vfp support
Diffstat (limited to 'sys/src/9/omap/trap.c')
-rw-r--r--sys/src/9/omap/trap.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/sys/src/9/omap/trap.c b/sys/src/9/omap/trap.c
index 7fab7c778..d7f1a592b 100644
--- a/sys/src/9/omap/trap.c
+++ b/sys/src/9/omap/trap.c
@@ -390,7 +390,7 @@ irq(Ureg* ureg)
switch (irqno) {
case 56:
case 57:
- iprint(" (I²C)");
+ iprint(" (I⁲C)");
break;
case 83:
case 86:
@@ -589,16 +589,22 @@ trap(Ureg *ureg)
break;
case PsrMund: /* undefined instruction */
if(user){
- /* look for floating point instructions to interpret */
- x = spllo();
- rv = fpiarm(ureg);
- splx(x);
- if(rv == 0){
- ldrexvalid = 0;
- snprint(buf, sizeof buf,
- "undefined instruction: pc %#lux\n",
- ureg->pc);
+ if(seg(up, ureg->pc, 0) != nil &&
+ *(u32int*)ureg->pc == 0xD1200070){
+ snprint(buf, sizeof buf, "sys: breakpoint");
postnote(up, 1, buf, NDebug);
+ }else{
+ /* look for floating point instructions to interpret */
+ x = spllo();
+ rv = fpiarm(ureg);
+ splx(x);
+ if(rv == 0){
+ ldrexvalid = 0;
+ snprint(buf, sizeof buf,
+ "undefined instruction: pc %#lux\n",
+ ureg->pc);
+ postnote(up, 1, buf, NDebug);
+ }
}
}else{
if (ureg->pc & 3) {