Subversion Repositories HelenOS

Rev

Rev 3149 | Rev 4337 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3149 Rev 3153
Line 120... Line 120...
120
    for (i = 0; i < BKPOINTS_MAX; i++)
120
    for (i = 0; i < BKPOINTS_MAX; i++)
121
        if (breakpoints[i].address) {
121
        if (breakpoints[i].address) {
122
            symbol = get_symtab_entry(breakpoints[i].address);
122
            symbol = get_symtab_entry(breakpoints[i].address);
123
 
123
 
124
#ifdef __32_BITS__
124
#ifdef __32_BITS__
125
            printf("%-2u %-5d %#10zx %s\n", i, breakpoints[i].counter,
125
            printf("%-2u %-5d %#10zx %s\n", i,
126
                breakpoints[i].address, symbol);
126
                breakpoints[i].counter, breakpoints[i].address,
-
 
127
                symbol);
127
#endif
128
#endif
128
 
129
 
129
#ifdef __64_BITS__
130
#ifdef __64_BITS__
130
            printf("%-2u %-5d %#18zx %s\n", i, breakpoints[i].counter,
131
            printf("%-2u %-5d %#18zx %s\n", i,
131
                breakpoints[i].address, symbol);
132
                breakpoints[i].counter, breakpoints[i].address,
-
 
133
                symbol);
132
#endif
134
#endif
133
 
135
 
134
        }
136
        }
135
    return 1;
137
    return 1;
136
}
138
}
Line 254... Line 256...
254
    /* Handle zero checker */
256
    /* Handle zero checker */
255
    if (! (breakpoints[slot].flags & BKPOINT_INSTR)) {
257
    if (! (breakpoints[slot].flags & BKPOINT_INSTR)) {
256
        if ((breakpoints[slot].flags & BKPOINT_CHECK_ZERO)) {
258
        if ((breakpoints[slot].flags & BKPOINT_CHECK_ZERO)) {
257
            if (*((unative_t *) breakpoints[slot].address) != 0)
259
            if (*((unative_t *) breakpoints[slot].address) != 0)
258
                return;
260
                return;
259
            printf("**** Found ZERO on address %lx (slot %d) ****\n",
261
            printf("*** Found ZERO on address %lx (slot %d) ***\n",
260
                breakpoints[slot].address, slot);
262
                breakpoints[slot].address, slot);
261
        } else {
263
        } else {
262
            printf("Data watchpoint - new data: %lx\n",
264
            printf("Data watchpoint - new data: %lx\n",
263
                   *((unative_t *) breakpoints[slot].address));
265
                *((unative_t *) breakpoints[slot].address));
264
        }
266
        }
Line 355... Line 357...
355
        }
357
        }
356
    }
358
    }
357
}
359
}
358
 
360
 
359
#ifdef CONFIG_SMP
361
#ifdef CONFIG_SMP
-
 
362
static void
-
 
363
debug_ipi(int n __attribute__((unused)),
360
static void debug_ipi(int n __attribute__((unused)), istate_t *istate __attribute__((unused)))
364
    istate_t *istate __attribute__((unused)))
361
{
365
{
362
    int i;
366
    int i;
363
 
367
 
364
    spinlock_lock(&bkpoint_lock);
368
    spinlock_lock(&bkpoint_lock);
365
    for (i = 0; i < BKPOINTS_MAX; i++)
369
    for (i = 0; i < BKPOINTS_MAX; i++)
Line 392... Line 396...
392
    cmd_initialize(&addwatchp_info);
396
    cmd_initialize(&addwatchp_info);
393
    if (!cmd_register(&addwatchp_info))
397
    if (!cmd_register(&addwatchp_info))
394
        panic("could not register command %s\n", addwatchp_info.name);
398
        panic("could not register command %s\n", addwatchp_info.name);
395
#endif
399
#endif
396
   
400
   
397
    exc_register(VECTOR_DEBUG, "debugger",
401
    exc_register(VECTOR_DEBUG, "debugger", debug_exception);
398
             debug_exception);
-
 
399
#ifdef CONFIG_SMP
402
#ifdef CONFIG_SMP
400
    exc_register(VECTOR_DEBUG_IPI, "debugger_smp",
403
    exc_register(VECTOR_DEBUG_IPI, "debugger_smp", debug_ipi);
401
             debug_ipi);
-
 
402
#endif
404
#endif
403
}
405
}
404
 
406
 
405
/** @}
407
/** @}
406
 */
408
 */