78 lines
2.1 KiB
C
78 lines
2.1 KiB
C
/****************************************************************************
|
|
*
|
|
* Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
*
|
|
* This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
* be copied by any method or incorporated into another program without
|
|
* the express written consent of Aerospace C.Power. This Information or any portion
|
|
* thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
* is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
* liability for its use in any way and conveys no license or title under
|
|
* any patent or copyright and makes no representation or warranty that this
|
|
* Information is free from patent or copyright infringement.
|
|
*
|
|
* ****************************************************************************/
|
|
/* os shim includes */
|
|
#include "os_types.h"
|
|
#include "iot_irq.h"
|
|
#include "iot_wdg.h"
|
|
#include "efuse.h"
|
|
#include "iot_system.h"
|
|
#include "sec_glb.h"
|
|
|
|
#include "platform.h"
|
|
#include "encoding.h"
|
|
|
|
extern void def_trap_entry_1();
|
|
extern void intc_handler(uint32_t cpu);
|
|
extern void trigger_zero_addr_access_detect();
|
|
|
|
extern void ahb_core0_enable();
|
|
|
|
|
|
uintptr_t handle_trap_1(uintptr_t mcause, uintptr_t epc, saved_registers *reg)
|
|
{
|
|
if ((mcause & MCAUSE_CAUSE) == IRQ_M_EXT) {
|
|
intc_handler(HAL_INTR_CPU_1);
|
|
}else {
|
|
}
|
|
|
|
return epc;
|
|
}
|
|
|
|
void _init_1()
|
|
{
|
|
//disable cpu1 branch prediction
|
|
sec_glb_core1_branch_pred_enable(0);
|
|
|
|
//disable cpu0, cpu2 instruction master access to dmc cache slave
|
|
sec_glb_mtx_mst_acc(19, 14, 0);
|
|
sec_glb_mtx_mst_acc(19, 16, 0);
|
|
|
|
sec_glb_mtx_mst_acc(20, 14, 0);
|
|
sec_glb_mtx_mst_acc(20, 16, 0);
|
|
|
|
write_csr(mtvec, &def_trap_entry_1);
|
|
|
|
clear_csr(mie, MIP_MEIP);
|
|
clear_csr(mie, MIP_MTIP);
|
|
|
|
iot_interrupt_init(HAL_INTR_CPU_1);
|
|
|
|
set_csr(mie, MIP_MEIP);
|
|
|
|
// Enable interrupts in general.
|
|
set_csr(mstatus, MSTATUS_MIE);
|
|
|
|
wdg_deinit(HAL_WDG_CPU_0);
|
|
//wdg_deinit(HAL_WDG_CPU_1);
|
|
wdg_deinit(HAL_WDG_CPU_2);
|
|
wdg_deinit(HAL_WDG_CPU_3);
|
|
wdg_deinit(HAL_WDG_CPU_4);
|
|
}
|
|
|
|
void _fini()
|
|
{
|
|
|
|
}
|