kunlun1和kunlun3 适配 riscv gcc 15版本
This commit is contained in:
@@ -191,7 +191,12 @@ void exception_handler_2(uintptr_t mcause, uintptr_t epc, saved_registers *reg)
|
||||
|
||||
//disble global interrupt;
|
||||
__asm volatile ( "csrc mstatus,8" );
|
||||
// 在mbadaddr寄存器写入值 gcc 15 中这个寄存器名称改了
|
||||
#if __GNUC__ <= 10
|
||||
__asm volatile ( "csrr %0, mbadaddr" : "=r"(mbadaddr));
|
||||
#else
|
||||
__asm volatile ( "csrr %0, mtval" : "=r"(mbadaddr));
|
||||
#endif
|
||||
|
||||
switch(mcause) {
|
||||
case 0x0:
|
||||
|
@@ -30,7 +30,13 @@ else
|
||||
RISCV_VER = riscv3
|
||||
else
|
||||
CC = riscv64-unknown-elf-gcc
|
||||
gcc_version=$(shell (${CC} -dumpversion | awk -F. '{print $1}'))
|
||||
# $(info "gcc version is " ${gcc_version})
|
||||
ifeq ($(gcc_version), 15.0.0)
|
||||
ISA = rv32imc_zicsr
|
||||
else
|
||||
ISA = rv32imc
|
||||
endif
|
||||
ABI = ilp32
|
||||
RISCV_VER = riscv
|
||||
endif
|
||||
|
@@ -195,7 +195,12 @@ uint32_t IRAM_ATTR wdg_handler(uint32_t vector, iot_addrword_t data)
|
||||
uintptr_t mbadaddr = 0, mepc = 0, mcause = 0;
|
||||
mbadaddr = 0xdeadfeed;
|
||||
__asm volatile ( "csrc mstatus, 8" );
|
||||
// 在mbadaddr寄存器写入值 gcc 15 中这个寄存器名称改了
|
||||
#if __GNUC__ <= 10
|
||||
__asm volatile ( "csrw mbadaddr, %0" :: "r"(mbadaddr) );
|
||||
#else
|
||||
__asm volatile ( "csrw mtval, %0" :: "r"(mbadaddr) );
|
||||
#endif
|
||||
__asm volatile ( "csrr %0, mepc" : "=r"(mepc) );
|
||||
__asm volatile ( "csrr %0, mcause" : "=r"(mcause) );
|
||||
iot_sprintf(buf, "mcause: 0x%08x, mepc: 0x%08x, mbadaddr: 0x%08x\n",
|
||||
@@ -266,7 +271,12 @@ uint32_t wdg_handler_1(uint32_t vector, iot_addrword_t data)
|
||||
print_cache_error_msg(buf);
|
||||
uint32_t mbadaddr = 0, mepc = 0, mcause = 0;
|
||||
__asm volatile ( "csrc mstatus, 8" );
|
||||
// 在mbadaddr寄存器写入值 gcc 15 中这个寄存器名称改了
|
||||
#if __GNUC__ <= 10
|
||||
__asm volatile ( "csrr %0, mbadaddr" : "=r"(mbadaddr));
|
||||
#else
|
||||
__asm volatile ( "csrr %0, mtval" : "=r"(mbadaddr));
|
||||
#endif
|
||||
__asm volatile ( "csrr %0, mepc" : "=r"(mepc) );
|
||||
__asm volatile ( "csrr %0, mcause" : "=r"(mcause) );
|
||||
iot_sprintf(buf, "mcause: 0x%08x, mepc: 0x%08x, mbadaddr: 0x%08x\n",
|
||||
|
@@ -211,7 +211,12 @@ uint32_t IRAM_ATTR wdg_timeout_handler(uint32_t vector, iot_addrword_t data)
|
||||
uintptr_t mbadaddr = 0, mepc = 0, mcause = 0;
|
||||
mbadaddr = 0xdeadfeed;
|
||||
__asm volatile ( "csrc mstatus, 8" );
|
||||
// 在mbadaddr寄存器写入值 gcc 15 中这个寄存器名称改了
|
||||
#if __GNUC__ <= 10
|
||||
__asm volatile ( "csrw mbadaddr, %0" :: "r"(mbadaddr) );
|
||||
#else
|
||||
__asm volatile ( "csrw mtval, %0" :: "r"(mbadaddr) );
|
||||
#endif
|
||||
__asm volatile ( "csrr %0, mepc" : "=r"(mepc) );
|
||||
__asm volatile ( "csrr %0, mcause" : "=r"(mcause) );
|
||||
iot_sprintf(buf, "mcause: 0x%08x, mepc: 0x%08x, mbadaddr: 0x%08x\n",
|
||||
|
@@ -14,7 +14,7 @@ Information is free from patent or copyright infringement.
|
||||
****************************************************************************/
|
||||
/* os shim includes */
|
||||
#include <stdio.h>
|
||||
|
||||
#include "stdint.h"
|
||||
#include "strformat.h"
|
||||
|
||||
static StrFormatResult write_str(void *user_data, const char *data, unsigned int len)
|
||||
|
@@ -178,7 +178,12 @@ void exception_handler_3(uintptr_t mcause, uintptr_t epc, saved_registers *reg)
|
||||
|
||||
//disble global interrupt;
|
||||
__asm volatile ( "csrc mstatus,8" );
|
||||
// 在mbadaddr寄存器写入值 gcc 15 中这个寄存器名称改了
|
||||
#if __GNUC__ <= 10
|
||||
__asm volatile ( "csrr %0, mbadaddr" : "=r"(mbadaddr));
|
||||
#else
|
||||
__asm volatile ( "csrr %0, mtval" : "=r"(mbadaddr));
|
||||
#endif
|
||||
|
||||
switch(mcause) {
|
||||
case 0x0:
|
||||
|
@@ -441,7 +441,11 @@ void exception_handler(uintptr_t mcause, uintptr_t epc, saved_registers *reg)
|
||||
|
||||
//disble global interrupt;
|
||||
__asm volatile ( "csrc mstatus,8" );
|
||||
#if __GNUC__ <= 10
|
||||
__asm volatile ( "csrr %0, mbadaddr" : "=r"(mbadaddr));
|
||||
#else
|
||||
__asm volatile ( "csrr %0, mtval" : "=r"(mbadaddr));
|
||||
#endif
|
||||
|
||||
switch(mcause) {
|
||||
case 0x0:
|
||||
|
@@ -461,7 +461,11 @@ void IRAM_ATTR exception_handler(uintptr_t mcause, uintptr_t epc, saved_register
|
||||
|
||||
//disble global interrupt;
|
||||
__asm volatile ( "csrc mstatus,8" );
|
||||
#if __GNUC__ <= 10
|
||||
__asm volatile ( "csrr %0, mbadaddr" : "=r"(mbadaddr));
|
||||
#else
|
||||
__asm volatile ( "csrr %0, mtval" : "=r"(mbadaddr));
|
||||
#endif
|
||||
|
||||
asm volatile ( "csrr %0, mcause" : "=r"(curr_mcause));
|
||||
asm volatile ( "csrr %0, mip" : "=r"(curr_mip));
|
||||
|
Reference in New Issue
Block a user