用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
2.0 KiB

10 months ago
/*
* Copyright (c) 2006-2024, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2024/01/11 flyingcys The first version
*/
#include "riscv-virt.h"
.org 0
.section .vectors, "ax"
.globl _start
.type _start,@function
_start:
.cfi_startproc
.cfi_undefined ra
.option push
.option norelax
// la gp, __global_pointer$
.option pop
// Continue primary hart
csrr a0, mhartid
li a1, PRIM_HART
bne a0, a1, secondary
li x1, 0
li x2, 0
li x3, 0
li x4, 0
li x5, 0
li x6, 0
li x7, 0
li x8, 0
li x9, 0
li x10, 0
li x11, 0
li x12, 0
li x13, 0
li x14, 0
li x15, 0
li x16, 0
li x17, 0
li x18, 0
li x19, 0
li x20, 0
li x21, 0
li x22, 0
li x23, 0
li x24, 0
li x25, 0
li x26, 0
li x27, 0
li x28, 0
li x29, 0
li x30, 0
li x31, 0
// enable interrupt
// li x3, 0x880
// csrw mie, x3
csrw mie, 0
csrw mip, 0
la t0, trap_entry
csrw mtvec, t0
#ifndef RISCV_QEMU
// invalidate all memory for BTB,BHT,DCACHE,ICACHE
li x3, 0x30013
csrs mcor, x3
// enable ICACHE,DCACHE,BHT,BTB,RAS,WA
li x3, 0x7f
csrs mhcr, x3
// enable data_cache_prefetch, amr
li x3, 0x610c
csrs mhint, x3 #mhint
#endif
# enable fp
li x3, 0x1 << 13
csrs mstatus, x3
// Primary hart
la sp, _stack_top
// Load data section
la a0, _data_lma
la a1, _data
la a2, _edata
bgeu a1, a2, 2f
1:
LOAD t0, (a0)
STOR t0, (a1)
addi a0, a0, REGSIZE
addi a1, a1, REGSIZE
bltu a1, a2, 1b
2:
// Clear bss section
la a0, _bss
la a1, _ebss
bgeu a0, a1, 2f
1:
// reduce branch time, be sure about bss alignment in linker script
STOR zero, 0x00 (a0)
STOR zero, 0x08 (a0)
STOR zero, 0x10 (a0)
STOR zero, 0x18 (a0)
STOR zero, 0x20 (a0)
STOR zero, 0x28 (a0)
STOR zero, 0x30 (a0)
STOR zero, 0x38 (a0)
addi a0, a0, REGSIZE * 8
bltu a0, a1, 1b
2:
// argc, argv, envp is 0
li a0, 0
li a1, 0
li a2, 0
jal entry
1:
wfi
j 1b
secondary:
// TODO: Multicore is not supported
wfi
j secondary
.cfi_endproc