使用ecall觸發(fā)中斷,中斷返回后還是執(zhí)行ecall指令,導(dǎo)致ecall中斷不斷被觸發(fā)!
/**?中斷處理函數(shù)?*/
void?Ecall_M_Mode_Handler(void)?__attribute__((interrupt("machine")));
void?Ecall_U_Mode_Handler(void)?__attribute__((interrupt("machine")));
void?Ecall_M_Mode_Handler(void)
{
;
}
void?Ecall_U_Mode_Handler(void)
{
;
}

/**?main函數(shù)?*/
int?main(void)
{
asm("ecall\n");
while(1);
}

上面的代碼在觸發(fā)中斷后,

會返回到main函數(shù),再執(zhí)行一遍 ecall指令,導(dǎo)致不斷觸發(fā)ecall中斷!


您好,如果異常由ecall或ebreak產(chǎn)生,由于mepc的值被更新為ecall或ebreak指令自己的PC。因此在異常返回時,如果直接使用mepc保存的PC值作為返回地址,則會再次跳回ecall或者ebreak指令,從而造成死循環(huán)(執(zhí)行ecall或ebreak指令導(dǎo)致重新進(jìn)入異常)。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频