From f2fe94f32da6362dd0d54fb9820a8ef20b932ab2 Mon Sep 17 00:00:00 2001 From: Sergey Date: Fri, 8 May 2015 22:18:10 -0700 Subject: [PATCH] Register dump fixed. --- src/libc/gen/ctime.c | 5 +--- sys/pic32/exception.c | 47 ++++++++++++++++++-------------------- sys/pic32/mmb-mx7/MMB-MX7 | 2 +- sys/pic32/mmb-mx7/Makefile | 26 ++------------------- 4 files changed, 26 insertions(+), 54 deletions(-) diff --git a/src/libc/gen/ctime.c b/src/libc/gen/ctime.c index c47a873..a373e45 100644 --- a/src/libc/gen/ctime.c +++ b/src/libc/gen/ctime.c @@ -17,10 +17,7 @@ char * ctime(t) time_t *t; { - struct tm *localtime(); - char *asctime(); - - return(asctime(localtime(t))); + return asctime(localtime(t)); } /* diff --git a/sys/pic32/exception.c b/sys/pic32/exception.c index b4b9e36..c7dbd45 100644 --- a/sys/pic32/exception.c +++ b/sys/pic32/exception.c @@ -151,25 +151,8 @@ dumpregs(frame) { unsigned int cause; const char *code = 0; - unsigned *stacktop = (unsigned *)0x80007ffc; - unsigned *p = (unsigned*)frame; - - printf("************************************\n"); - printf("*******STACK DUMP START*************\n"); - printf("frame = %8x\n", frame); - printf("stack data\n"); - while (p <= stacktop) { - printf(" %8x", *p++); - if (p <= stacktop) - printf(" %8x", *p++); - if (p <= stacktop) - printf(" %8x", *p++); - if (p <= stacktop) - printf(" %8x", *p++); - printf("\n"); - } - printf("*******STACK DUMP END***************\n"); - printf("************************************\n"); + unsigned *stacktop = (unsigned*) 0x80007ffc; + unsigned *p = (unsigned*) frame; printf("\n*** 0x%08x: exception ", frame [FRAME_PC]); @@ -198,16 +181,30 @@ dumpregs(frame) printf("*** badvaddr = 0x%08x\n", mips_read_c0_register(C0_BADVADDR, 0)); } - printf(" t0 = %8x s0 = %8x t8 = %8x lo = %8x\n", + + printf("*** stack frame at %8x\n", frame); + while (p <= stacktop) { + printf(" %8x", *p++); + if (p <= stacktop) + printf(" %8x", *p++); + if (p <= stacktop) + printf(" %8x", *p++); + if (p <= stacktop) + printf(" %8x", *p++); + printf("\n"); + } + + printf("*** registers:\n"); + printf(" t0 = %8x s0 = %8x t8 = %8x lo = %8x\n", frame [FRAME_R8], frame [FRAME_R16], frame [FRAME_R24], frame [FRAME_LO]); printf("at = %8x t1 = %8x s1 = %8x t9 = %8x hi = %8x\n", frame [FRAME_R1], frame [FRAME_R9], frame [FRAME_R17], frame [FRAME_R25], frame [FRAME_HI]); - printf("v0 = %8x t2 = %8x s2 = %8x status = %8x\n", + printf("v0 = %8x t2 = %8x s2 = %8x status = %8x\n", frame [FRAME_R2], frame [FRAME_R10], frame [FRAME_R18], frame [FRAME_STATUS]); - printf("v1 = %8x t3 = %8x s3 = %8x cause = %8x\n", + printf("v1 = %8x t3 = %8x s3 = %8x cause = %8x\n", frame [FRAME_R3], frame [FRAME_R11], frame [FRAME_R19], cause); printf("a0 = %8x t4 = %8x s4 = %8x gp = %8x epc = %8x\n", @@ -282,7 +279,7 @@ exception(frame) /*NOTREACHED*/ case CA_IBE + USER: /* Bus error, instruction fetch */ case CA_DBE + USER: /* Bus error, load or store */ - printf("*** 0x%08x: bus error\n", frame [FRAME_PC]); + printf("*** 0x%08x: %s: bus error\n", frame [FRAME_PC], u.u_comm); psig = SIGBUS; break; case CA_RI + USER: /* Reserved instruction */ @@ -303,8 +300,8 @@ exception(frame) break; case CA_AdEL + USER: /* Address error, load or instruction fetch */ case CA_AdES + USER: /* Address error, store */ - printf("*** 0x%08x: bad address 0x%08x\n", - frame [FRAME_PC], mips_read_c0_register(C0_BADVADDR, 0)); + printf("*** 0x%08x: %s: bad address 0x%08x\n", + frame [FRAME_PC], u.u_comm, mips_read_c0_register(C0_BADVADDR, 0)); psig = SIGSEGV; break; } diff --git a/sys/pic32/mmb-mx7/MMB-MX7 b/sys/pic32/mmb-mx7/MMB-MX7 index e403e71..b85a724 100644 --- a/sys/pic32/mmb-mx7/MMB-MX7 +++ b/sys/pic32/mmb-mx7/MMB-MX7 @@ -18,4 +18,4 @@ device gpio device adc device uart1 -device bootloader button=A10 crystal=8 jump=0x9d000000 invled=A0 invled2=A1 invled3=D9 clear=D2 +#device bootloader button=A10 crystal=8 jump=0x9d000000 invled=A0 invled2=A1 invled3=D9 clear=D2 diff --git a/sys/pic32/mmb-mx7/Makefile b/sys/pic32/mmb-mx7/Makefile index 6566e10..fb750f6 100644 --- a/sys/pic32/mmb-mx7/Makefile +++ b/sys/pic32/mmb-mx7/Makefile @@ -6,24 +6,10 @@ S = ../../../tools/configsys/../../sys/kernel vpath %.c $(M):$(S) vpath %.S $(M):$(S) -KERNOBJ += adc.o clock.o cons.o devsw.o exception.o exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o gpio.o init_main.o init_sysent.o kern_clock.o kern_descrip.o kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o kern_subr.o kern_synch.o kern_sysctl.o kern_time.o machdep.o mem.o rd_sd.o rdisk.o signal.o spi_bus.o startup.o subr_prf.o subr_rmap.o swap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o syscalls.o sysctl.o tty.o tty_subr.o tty_tty.o uart.o ufs_alloc.o ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o usb_device.o usb_function_cdc.o usb_uart.o vers.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o -EXTRA_TARGETS = bootloader +KERNOBJ += adc.o clock.o cons.o devcfg.o devsw.o exception.o exec_aout.o exec_conf.o exec_elf.o exec_script.o exec_subr.o gpio.o init_main.o init_sysent.o kern_clock.o kern_descrip.o kern_exec.o kern_exit.o kern_fork.o kern_mman.o kern_proc.o kern_prot.o kern_prot2.o kern_resource.o kern_sig.o kern_sig2.o kern_subr.o kern_synch.o kern_sysctl.o kern_time.o machdep.o mem.o rd_sd.o rdisk.o signal.o spi_bus.o startup.o subr_prf.o subr_rmap.o swap.o sys_generic.o sys_inode.o sys_pipe.o sys_process.o syscalls.o sysctl.o tty.o tty_subr.o tty_tty.o uart.o ufs_alloc.o ufs_bio.o ufs_bmap.o ufs_dsort.o ufs_fio.o ufs_inode.o ufs_mount.o ufs_namei.o ufs_subr.o ufs_syscalls.o ufs_syscalls2.o usb_device.o usb_function_cdc.o usb_uart.o vers.o vfs_vnops.o vm_sched.o vm_swap.o vm_swp.o +EXTRA_TARGETS = DEFS += -DADC_ENABLED=YES -DEFS += -DBL_BUTTON_PIN=10 -DEFS += -DBL_BUTTON_PORT=TRISA -DEFS += -DBL_CLEAR_PIN=2 -DEFS += -DBL_CLEAR_PORT=TRISD -DEFS += -DBL_CRYSTAL=8 -DEFS += -DBL_LED2_INVERT -DEFS += -DBL_LED2_PIN=1 -DEFS += -DBL_LED2_PORT=TRISA -DEFS += -DBL_LED3_INVERT -DEFS += -DBL_LED3_PIN=9 -DEFS += -DBL_LED3_PORT=TRISD -DEFS += -DBL_LED_INVERT -DEFS += -DBL_LED_PIN=0 -DEFS += -DBL_LED_PORT=TRISA DEFS += -DBUS_DIV=1 DEFS += -DBUS_KHZ='CPU_KHZ/BUS_DIV' DEFS += -DCONSOLE_DEVICE=ttyUSB0 @@ -59,16 +45,9 @@ DEFS += -DDC3_VBUSON=DEVCFG3_FVBUSONIO DEFS += -DEXEC_AOUT DEFS += -DEXEC_ELF DEFS += -DEXEC_SCRIPT -DEFS += -DFLASH_JUMP=0x9d000000 DEFS += -DGPIO_CLEAR_PIN=2 DEFS += -DGPIO_CLEAR_PORT=TRISD DEFS += -DGPIO_ENABLED=YES -DEFS += -DHID_FEATURE_REPORT_BYTES=2 -DEFS += -DHID_INPUT_REPORT_BYTES=2 -DEFS += -DHID_INT_IN_EP_SIZE=64 -DEFS += -DHID_INT_OUT_EP_SIZE=64 -DEFS += -DHID_OUTPUT_REPORT_BYTES=2 -DEFS += -DHID_RPT01_SIZE=29 DEFS += -DKERNEL DEFS += -DLED_KERNEL_INVERT=YES DEFS += -DLED_KERNEL_PIN=0 @@ -87,7 +66,6 @@ DEFS += -DSD0_PORT=1 DEFS += -DUART1_ENABLED=YES DEFS += -DUARTUSB_ENABLED=YES DEFS += -DUCB_METER -DEFS += -DUSB_EP0_BUFF_SIZE=8 DEFS += -DUSB_MAX_EP_NUMBER=3 DEFS += -DUSB_NUM_STRING_DESCRIPTORS=3