project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp: Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem. sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately. sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades. sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for fastboot. Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
147 lines
3.3 KiB
ArmAsm
147 lines
3.3 KiB
ArmAsm
/*
|
|
* File : context_gcc.S
|
|
* This file is part of RT-Thread RTOS
|
|
* COPYRIGHT (C) 2018, RT-Thread Development Team
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*
|
|
* Change Logs:
|
|
* Date Author Notes
|
|
* 2018-05-29 tanek first implementation
|
|
*/
|
|
|
|
.section .text.entry
|
|
.align 6
|
|
.global trap_entry
|
|
trap_entry:
|
|
|
|
// save all from thread context
|
|
addi sp, sp, -32 * 4
|
|
|
|
sw x1, 1 * 4(sp)
|
|
|
|
sw x4, 4 * 4(sp)
|
|
sw x5, 5 * 4(sp)
|
|
sw x6, 6 * 4(sp)
|
|
sw x7, 7 * 4(sp)
|
|
sw x8, 8 * 4(sp)
|
|
sw x9, 9 * 4(sp)
|
|
sw x10, 10 * 4(sp)
|
|
sw x11, 11 * 4(sp)
|
|
sw x12, 12 * 4(sp)
|
|
sw x13, 13 * 4(sp)
|
|
sw x14, 14 * 4(sp)
|
|
sw x15, 15 * 4(sp)
|
|
sw x16, 16 * 4(sp)
|
|
sw x17, 17 * 4(sp)
|
|
sw x18, 18 * 4(sp)
|
|
sw x19, 19 * 4(sp)
|
|
sw x20, 20 * 4(sp)
|
|
sw x21, 21 * 4(sp)
|
|
sw x22, 22 * 4(sp)
|
|
sw x23, 23 * 4(sp)
|
|
sw x24, 24 * 4(sp)
|
|
sw x25, 25 * 4(sp)
|
|
sw x26, 26 * 4(sp)
|
|
sw x27, 27 * 4(sp)
|
|
sw x28, 28 * 4(sp)
|
|
sw x29, 29 * 4(sp)
|
|
sw x30, 30 * 4(sp)
|
|
sw x31, 31 * 4(sp)
|
|
|
|
li t0, 0x80
|
|
sw t0, 2 * 4(sp)
|
|
|
|
// switch to interrupt stack
|
|
move s0, sp
|
|
la sp, _sp
|
|
|
|
// interrupt handle
|
|
call rt_interrupt_enter
|
|
csrr a0, mcause
|
|
csrr a1, mepc
|
|
mv a2, s0
|
|
call handle_trap
|
|
call rt_interrupt_leave
|
|
|
|
// switch to from thread stack
|
|
move sp, s0
|
|
|
|
// need to switch new thread
|
|
la s0, rt_thread_switch_interrupt_flag
|
|
lw s2, 0(s0)
|
|
beqz s2, spurious_interrupt
|
|
sw zero, 0(s0)
|
|
|
|
csrr a0, mepc
|
|
sw a0, 0 * 4(sp)
|
|
|
|
la s0, rt_interrupt_from_thread
|
|
lw s1, 0(s0)
|
|
sw sp, 0(s1)
|
|
|
|
la s0, rt_interrupt_to_thread
|
|
lw s1, 0(s0)
|
|
lw sp, 0(s1)
|
|
|
|
lw a0, 0 * 4(sp)
|
|
csrw mepc, a0
|
|
|
|
spurious_interrupt:
|
|
lw x1, 1 * 4(sp)
|
|
|
|
// Remain in M-mode after mret
|
|
li t0, 0x00001800
|
|
csrs mstatus, t0
|
|
lw t0, 2 * 4(sp)
|
|
csrs mstatus, t0
|
|
|
|
lw x4, 4 * 4(sp)
|
|
lw x5, 5 * 4(sp)
|
|
lw x6, 6 * 4(sp)
|
|
lw x7, 7 * 4(sp)
|
|
lw x8, 8 * 4(sp)
|
|
lw x9, 9 * 4(sp)
|
|
lw x10, 10 * 4(sp)
|
|
lw x11, 11 * 4(sp)
|
|
lw x12, 12 * 4(sp)
|
|
lw x13, 13 * 4(sp)
|
|
lw x14, 14 * 4(sp)
|
|
lw x15, 15 * 4(sp)
|
|
lw x16, 16 * 4(sp)
|
|
lw x17, 17 * 4(sp)
|
|
lw x18, 18 * 4(sp)
|
|
lw x19, 19 * 4(sp)
|
|
lw x20, 20 * 4(sp)
|
|
lw x21, 21 * 4(sp)
|
|
lw x22, 22 * 4(sp)
|
|
lw x23, 23 * 4(sp)
|
|
lw x24, 24 * 4(sp)
|
|
lw x25, 25 * 4(sp)
|
|
lw x26, 26 * 4(sp)
|
|
lw x27, 27 * 4(sp)
|
|
lw x28, 28 * 4(sp)
|
|
lw x29, 29 * 4(sp)
|
|
lw x30, 30 * 4(sp)
|
|
lw x31, 31 * 4(sp)
|
|
|
|
addi sp, sp, 32 * 4
|
|
mret
|
|
|
|
.weak handle_trap
|
|
handle_trap:
|
|
1:
|
|
j 1b
|