Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2935 → Rev 2936

/branches/tracing/uspace/app/debug/arch/mips32/src/mips32.c
38,6 → 38,7
#include <udebug.h>
#include <kernel/arch/context_offset.h>
 
#include "../../../cons.h"
#include "../../../main.h"
#include "../../../include/arch.h"
 
58,16 → 59,16
}
 
if (!brk) {
printf("too many breakpoints\n");
cons_printf("too many breakpoints\n");
return;
}
 
rc = udebug_mem_read(app_phone, &brk->arch.back, addr, sizeof(&brk->arch.back));
printf("udebug_mem_read() -> %d\n", rc);
cons_printf("udebug_mem_read() -> %d\n", rc);
brkp = OPCODE_BREAK;
rc = udebug_mem_write(app_phone, &brkp, addr, sizeof(brkp));
// for (i=0; i<256; i++) rc = udebug_mem_write(app_phone, &brkp, addr+4*i, sizeof(brkp));
printf("udebug_mem_write() -> %d\n", rc);
cons_printf("udebug_mem_write() -> %d\n", rc);
 
brk->addr = addr;
brk->set = 1;
86,9 → 87,9
brkp = OPCODE_BREAK;
 
rc = udebug_regs_read(app_phone, thread_hash, buffer);
printf("udebug_regs_read -> %d\n", rc);
cons_printf("udebug_regs_read -> %d\n", rc);
epc = buffer[EOFFSET_EPC/sizeof(unsigned)];
printf("EPC was 0x%08x\n", epc);
cons_printf("EPC was 0x%08x\n", epc);
brk_addr = epc;
 
int bi;
97,11 → 98,11
break;
}
if (bi < MAX_BRKPTS) {
printf("breakpoint %d hit\n", bi);
cons_printf("breakpoint %d hit\n", bi);
breakpoint_hit();
 
rc = udebug_mem_write(app_phone, &brk_list[bi].arch.back, brk_addr, 4);
printf("udebug_mem_write(phone, 0x%x, 0x%02x, 1) -> %d\n", brk_addr, brk_list[bi].arch.back, rc);
cons_printf("udebug_mem_write(phone, 0x%x, 0x%02x, 1) -> %d\n", brk_addr, brk_list[bi].arch.back, rc);
rc = udebug_mem_read(app_phone, &brk_list[bi].arch.back, brk_addr+4, 4);
rc = udebug_mem_write(app_phone, &brkp, brk_addr+4, 4);
lifted_brkpt = &brk_list[bi];
113,7 → 114,7
break;
}
if (bi < MAX_BRKPTS) {
printf("restoring breakpoint %d\n", bi);
cons_printf("restoring breakpoint %d\n", bi);
rc = udebug_mem_write(app_phone, &brk_list[bi].arch.back, brk_addr, 4);
rc = udebug_mem_read(app_phone, &brk_list[bi].arch.back, brk_addr-4, 4);
rc = udebug_mem_write(app_phone, &brkp, brk_addr-4, 4);
121,7 → 122,7
return;
}
 
printf("unrecognized breakpoint at 0x%x\n", brk_addr);
cons_printf("unrecognized breakpoint at 0x%x\n", brk_addr);
}
 
void arch_event_trap(thash_t thread_hash)