Changeset 459 for azure_iot_hub_riscv/trunk/asp_baseplatform/arch
- Timestamp:
- Sep 25, 2020, 7:28:35 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub_riscv/trunk/asp_baseplatform/arch/riscv_gcc/prc_config.c
r453 r459 73 73 unsigned long mstatus = *(((uintptr_t*)p_excinf) + P_EXCINF_OFFSET_MSTATUS); 74 74 uintptr_t pc = *(((uintptr_t*)p_excinf) + P_EXCINF_OFFSET_PC); 75 uintptr_t sp0 = *(((uintptr_t*)p_excinf) + P_EXCONF_OFFSET_SP); 76 uintptr_t sp1 = *(((uintptr_t*)p_excinf) + P_EXCONF_OFFSET_SP + 1); 75 77 unsigned long excno = mcause & MCAUSE_CAUSE; 78 static int count = 0; 79 80 if (count == 0) { 81 count++; 76 82 77 83 if((long)mcause < 0) 78 84 excno += TMAX_MACHNE_INTNO / 2; 79 85 80 switch (excno) { 81 case EXC_INSTRUCTION_ADDRESS_MISALIGNED: 82 syslog(LOG_EMERG, "\nUnregistered instruction address misaligned occurs."); 83 break; 84 case EXC_INSTRUCTION_ADDRESS_FAULT: 85 syslog(LOG_EMERG, "\nUnregistered instruction address fault occurs."); 86 break; 87 case EXC_ILLEGAL_INSTRUCTION: 88 syslog(LOG_EMERG, "\nUnregistered illegal instruction occurs."); 89 break; 90 case EXC_BREAKPOINT: 91 syslog(LOG_EMERG, "\nUnregistered breakpoint occurs."); 92 break; 93 case EXC_LOAD_ADDRESS_MISALIGNED: 94 syslog(LOG_EMERG, "\nUnregistered load address misaligned occurs."); 95 break; 96 case EXC_LOAD_ADDRESS_FAULT: 97 syslog(LOG_EMERG, "\nUnregistered load address fault occurs."); 98 break; 99 case EXC_STORE_AMO_ADDRESS_MISALIGNED: 100 syslog(LOG_EMERG, "\nUnregistered store AMO address misaligned occurs."); 101 break; 102 case EXC_STORE_AMO_ACCESS_FAUT: 103 syslog(LOG_EMERG, "\nUnregistered store AMO access faut occurs."); 104 break; 105 case EXC_ENVIRONMENT_CALL_FROM_MMODE: 106 syslog(LOG_EMERG, "\nUnregistered environment call from MMODE occurs."); 107 break; 108 default: 109 syslog(LOG_EMERG, "\nUnregistered Interrupt occurs."); 110 break; 111 } 112 113 syslog(LOG_EMERG, "Excno = 0x%02X, PC = 0x%X, mstatus = 0x%X, p_excinf = 0x%X", 114 excno, pc, mstatus, p_excinf); 86 switch (excno) { 87 case EXC_INSTRUCTION_ADDRESS_MISALIGNED: 88 syslog_0(LOG_EMERG, "\nUnregistered instruction address misaligned occurs."); 89 break; 90 case EXC_INSTRUCTION_ADDRESS_FAULT: 91 syslog_0(LOG_EMERG, "\nUnregistered instruction address fault occurs."); 92 break; 93 case EXC_ILLEGAL_INSTRUCTION: 94 syslog_0(LOG_EMERG, "\nUnregistered illegal instruction occurs."); 95 break; 96 case EXC_BREAKPOINT: 97 syslog_0(LOG_EMERG, "\nUnregistered breakpoint occurs."); 98 break; 99 case EXC_LOAD_ADDRESS_MISALIGNED: 100 syslog_0(LOG_EMERG, "\nUnregistered load address misaligned occurs."); 101 break; 102 case EXC_LOAD_ADDRESS_FAULT: 103 syslog_0(LOG_EMERG, "\nUnregistered load address fault occurs."); 104 break; 105 case EXC_STORE_AMO_ADDRESS_MISALIGNED: 106 syslog_0(LOG_EMERG, "\nUnregistered store AMO address misaligned occurs."); 107 break; 108 case EXC_STORE_AMO_ACCESS_FAUT: 109 syslog_0(LOG_EMERG, "\nUnregistered store AMO access faut occurs."); 110 break; 111 case EXC_ENVIRONMENT_CALL_FROM_MMODE: 112 syslog_0(LOG_EMERG, "\nUnregistered environment call from MMODE occurs."); 113 break; 114 default: 115 syslog_0(LOG_EMERG, "\nUnregistered Interrupt occurs."); 116 break; 117 } 118 119 syslog_4(LOG_EMERG, "Excno = 0x%02X, PC = 0x%X, mstatus = 0x%X, p_excinf = 0x%X", 120 excno, pc, mstatus, p_excinf); 121 122 syslog_3(LOG_EMERG, "SP0 = 0x%X, SP1 = 0x%X, runtsk = 0x%X", sp0, sp1, p_runtsk->p_tinib->task); 123 124 unsigned int *addr = (((unsigned int *)p_excinf) + P_EXCONF_OFFSET_SP + 3); 125 syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4; 126 syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4; 127 syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4; 128 syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4; 129 syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4; 130 syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4; 131 syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4; 132 syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4; 133 syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4; 134 syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4; 135 syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X",10, addr[0], addr[1], addr[2], addr[3]); addr+=4; 136 syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4; 137 syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4; 138 syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4; 139 syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4; 140 syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4; 141 syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X",10, addr[0], addr[1], addr[2], addr[3]); addr+=4; 142 143 addr = (unsigned int *)((sp0 + 15) / 16); 144 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[-4], addr[-4], addr[-3], addr[-2], addr[-1]); 145 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 0], addr[ 0], addr[ 1], addr[ 2], addr[ 3]); 146 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 4], addr[ 4], addr[ 5], addr[ 6], addr[ 7]); 147 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 8], addr[ 8], addr[ 9], addr[10], addr[11]); 148 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[12], addr[12], addr[13], addr[14], addr[15]); 149 150 addr = (unsigned int *)((sp1 + 15) / 16); 151 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[-4], addr[-4], addr[-3], addr[-2], addr[-1]); 152 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 0], addr[ 0], addr[ 1], addr[ 2], addr[ 3]); 153 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 4], addr[ 4], addr[ 5], addr[ 6], addr[ 7]); 154 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 8], addr[ 8], addr[ 9], addr[10], addr[11]); 155 syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[12], addr[12], addr[13], addr[14], addr[15]); 156 } 115 157 116 158 target_exit();
Note:
See TracChangeset
for help on using the changeset viewer.