OpenCores
URL https://opencores.org/ocsvn/yifive/yifive/trunk

Subversion Repositories yifive

[/] [yifive/] [trunk/] [caravel_yifive/] [verilog/] [rtl/] [syntacore/] [scr1/] [sim/] [tests/] [common/] [reloc.h] - Blame information for rev 22

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 22 dinesha
#ifndef RELOC_H
2
#define RELOC_H
3
 
4
#if (TCM == 1)
5
#define RELOC_PROC              \
6
    la    a0, __reloc_start;    \
7
    la    a1, __TEXT_START__;   \
8
    la    a2, __DATA_END__;     \
9
    beq   a0, a1, 21f;          \
10
    j     2f;                   \
11
1:  lw    a3, 0(a0);            \
12
    sw    a3, 0(a1);            \
13
    add   a0, a0, 4;            \
14
    add   a1, a1, 4;            \
15
2:  bne   a1, a2, 1b;           \
16
    /* clear bss */             \
17
    la    a2, __BSS_START__;    \
18
21: la    a1, __BSS_END__;      \
19
    j     4f;                   \
20
3:  sw    zero, 0(a2);          \
21
    add   a2, a2, 4;            \
22
4:  bne   a1, a2, 3b;           \
23
    /* init stack */            \
24
    la    sp, __C_STACK_TOP__;  \
25
    /* init hart0 TLS */        \
26
    la    a0, _tdata_begin;     \
27
    la    a2, _tbss_end;        \
28
    sub   a1, a2, a0;           \
29
    la    a4, __STACK_START__;  \
30
    sub   tp, a4, a1;
31
#else  // #if TCM
32
 
33
#define RELOC_PROC
34
 
35
#endif  // #else #if TCM
36
 
37
#endif  // 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.