1d6aed566Sopenharmony_ci/* 2d6aed566Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3d6aed566Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d6aed566Sopenharmony_ci * you may not use this file except in compliance with the License. 5d6aed566Sopenharmony_ci * You may obtain a copy of the License at 6d6aed566Sopenharmony_ci * 7d6aed566Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d6aed566Sopenharmony_ci * 9d6aed566Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d6aed566Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d6aed566Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d6aed566Sopenharmony_ci * See the License for the specific language governing permissions and 13d6aed566Sopenharmony_ci * limitations under the License. 14d6aed566Sopenharmony_ci */ 15d6aed566Sopenharmony_ci 16d6aed566Sopenharmony_ci#include "soc.h" 17d6aed566Sopenharmony_ci 18d6aed566Sopenharmony_ci.macro PUSH_CALLER_REG 19d6aed566Sopenharmony_ci addi sp, sp, -(INT_SIZE_ON_STACK) 20d6aed566Sopenharmony_ci SREG t6, 16 * REGBYTES(sp) 21d6aed566Sopenharmony_ci SREG t5, 17 * REGBYTES(sp) 22d6aed566Sopenharmony_ci SREG t4, 18 * REGBYTES(sp) 23d6aed566Sopenharmony_ci SREG t3, 19 * REGBYTES(sp) 24d6aed566Sopenharmony_ci SREG a7, 20 * REGBYTES(sp) 25d6aed566Sopenharmony_ci SREG a6, 21 * REGBYTES(sp) 26d6aed566Sopenharmony_ci SREG a5, 22 * REGBYTES(sp) 27d6aed566Sopenharmony_ci SREG a4, 23 * REGBYTES(sp) 28d6aed566Sopenharmony_ci SREG a3, 24 * REGBYTES(sp) 29d6aed566Sopenharmony_ci SREG a2, 25 * REGBYTES(sp) 30d6aed566Sopenharmony_ci SREG a1, 26 * REGBYTES(sp) 31d6aed566Sopenharmony_ci SREG a0, 27 * REGBYTES(sp) 32d6aed566Sopenharmony_ci SREG t2, 28 * REGBYTES(sp) 33d6aed566Sopenharmony_ci SREG t1, 29 * REGBYTES(sp) 34d6aed566Sopenharmony_ci SREG t0, 30 * REGBYTES(sp) 35d6aed566Sopenharmony_ci SREG ra, 31 * REGBYTES(sp) 36d6aed566Sopenharmony_ci.endm 37d6aed566Sopenharmony_ci 38d6aed566Sopenharmony_ci.extern memset 39d6aed566Sopenharmony_ci.global _start 40d6aed566Sopenharmony_ci.section .start.text 41d6aed566Sopenharmony_ci.align 4 42d6aed566Sopenharmony_ci_start: 43d6aed566Sopenharmony_ci li t0, RISCV_MSTATUS_MPP 44d6aed566Sopenharmony_ci csrw mstatus, t0 45d6aed566Sopenharmony_ci csrw mie, zero 46d6aed566Sopenharmony_ci la t0, HalTrapVector 47d6aed566Sopenharmony_ci csrw mtvec, t0 # direct mode 48d6aed566Sopenharmony_ci 49d6aed566Sopenharmony_ci .option push 50d6aed566Sopenharmony_ci .option norelax 51d6aed566Sopenharmony_ci la gp, __global_pointer$ 52d6aed566Sopenharmony_ci .option pop 53d6aed566Sopenharmony_ci 54d6aed566Sopenharmony_ci la t0, __bss_start 55d6aed566Sopenharmony_ci la t1, __bss_end 56d6aed566Sopenharmony_ci2: 57d6aed566Sopenharmony_ci sw zero, 0x0(t0) 58d6aed566Sopenharmony_ci addi t0, t0, 0x4 59d6aed566Sopenharmony_ci bgtu t1, t0, 2b 60d6aed566Sopenharmony_ci 61d6aed566Sopenharmony_ci la sp, __start_and_irq_stack_top 62d6aed566Sopenharmony_ci 63d6aed566Sopenharmony_ci tail main 64