source: rtems/c/src/lib/libbsp/v850/gdbv850sim/start/start.S @ 2d7ae960

4.115
Last change on this file since 2d7ae960 was 2d7ae960, checked in by Joel Sherrill <joel.sherrill@…>, on 06/11/12 at 18:37:29

v850 port: Initial addition with BSP for simulator in GDB

Port

+ v850 does not have appear to have any optimized bit scan instructions
+ v850 does have single instructions for wap u16 and u32
+ Code path optimization preferences set
+ Add BSP variants for each GCC CPU model flag and a README

  • v850e1 variant does not work (fails during BSP initialization)

BSP for GDB v850 Simulator

+ linkcmds matches defaults in GDB simulator with RTEMS mods
+ crt1.c added from v850 newlib port for main()
+ BSP exits cleanly
+ printk and console I/O work
+ uses clock tick from IDLE task
+ Tests not requiring real clock ISR work

Documentation

+ CPU Supplment chapter for v850 added

  • Property mode set to 100644
File size: 1.4 KB
Line 
1# NEC V850 startup code
2
3        .section .text
4        .global _start
5
6_start:
7
8#if defined(__v850e__) || defined(__v850e2__) || defined(__v850e2v3__)
9
10        movea   255,            r0,     r20
11        mov     65535,          r21
12        mov     hilo(_stack),   sp
13        mov     hilo(__ep),     ep
14        mov     hilo(__gp),     gp
15        mov     hilo(__ctbp),   r6
16        ldsr    r6,             ctbp
17        mov     hilo(_edata),   r6
18        mov     hilo(_end),     r7
19.L0:
20        st.w    r0,             0[r6]
21        addi    4,              r6,     r6
22        cmp     r7,             r6
23        bl      .L0
24.L1:
25        jarl    ___main,        r31
26        addi    -16,            sp,     sp
27        mov     0,              r6
28        mov     0,              r7
29        mov     0,              r8
30        /* jarl    _main,               r31 */
31        jarl    _boot_card,             r31
32        mov     r10,            r6
33        jarl    _exit,          r31
34
35# else
36        movea   255,            r0,     r20
37        mov     r0,             r21
38        ori     65535,          r0,     r21
39        movhi   hi(_stack),     r0,     sp
40        movea   lo(_stack),     sp,     sp
41        movhi   hi(__ep),       r0,     ep
42        movea   lo(__ep),       ep,     ep
43        movhi   hi(__gp),       r0,     gp
44        movea   lo(__gp),       gp,     gp
45
46        movhi   hi(_edata),     r0,     r6
47        movea   lo(_edata),     r6,     r6
48        movhi   hi(_end),       r0,     r7
49        movea   lo(_end),       r7,     r7
50.L0:
51        st.b    r0,             0[r6]
52        addi    1,              r6,     r6
53        cmp     r7,             r6
54        bl      .L0
55.L1:
56        /* jarl    ___main,     r31 */
57        addi    -16,            sp,     sp
58        mov     0,              r6
59        mov     0,              r7
60        mov     0,              r8
61        /* jarl    _main,               r31 */
62        jarl    _boot_card,             r31
63        mov     r10,            r6
64.L2:
65        br      .L2
66        /* jarl    _exit,               r31 */
67# endif
68
69#if 0
70        .section .stack
71_stack: .long   1
72#endif
73
74        .section .data
75        .global ___dso_handle
76        .weak   ___dso_handle
77___dso_handle:
78        .long   0
Note: See TracBrowser for help on using the repository browser.