Subversion Repositories HelenOS-historic

Rev

Rev 614 | Rev 623 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 614 Rev 615
Line 229... Line 229...
229
    if (cur) {
229
    if (cur) {
230
        if ((cur->executing && pstate->epc==cur->address) ||
230
        if ((cur->executing && pstate->epc==cur->address) ||
231
            (!cur->executing && pstate->epc==cur->address+sizeof(__native)))
231
            (!cur->executing && pstate->epc==cur->address+sizeof(__native)))
232
            panic("Weird breakpoint state.\n");
232
            panic("Weird breakpoint state.\n");
233
        if (!cur->executing) {
233
        if (!cur->executing) {
234
            printf("***Breakpoint %d: %p in %s.\n", i,
234
            printf("***Breakpoint %d: 0x%p in %s.\n", i,
235
                   pstate->epc,symbol);
235
                   pstate->epc,symbol);
236
            /* Return first instruction back */
236
            /* Return first instruction back */
237
            ((__u32 *)cur->address)[0] = cur->instruction;
237
            ((__u32 *)cur->address)[0] = cur->instruction;
238
            /* Set Breakpoint on second */
238
            /* Set Breakpoint on second */
239
            ((__u32 *)cur->address)[1] = 0x0d;
239
            ((__u32 *)cur->address)[1] = 0x0d;
Line 246... Line 246...
246
            cur->executing = false;
246
            cur->executing = false;
247
            spinlock_unlock(&bkpoint_lock);
247
            spinlock_unlock(&bkpoint_lock);
248
            return;
248
            return;
249
        }
249
        }
250
    } else {
250
    } else {
251
        printf("***Breakpoint %p in %s.\n", pstate->epc, symbol);
251
        printf("***Breakpoint 0x%p in %s.\n", pstate->epc, symbol);
252
        /* Move on to next instruction */
252
        /* Move on to next instruction */
253
        pstate->epc += 4;
253
        pstate->epc += 4;
254
    }
254
    }
255
    spinlock_unlock(&bkpoint_lock);
255
    spinlock_unlock(&bkpoint_lock);
256
 
256