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

Subversion Repositories sardmips

[/] [sardmips/] [trunk/] [PROGRAMMING_exception/] [crt0.S] - Blame information for rev 20

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 igorloi
/*
2
 * Starting point for everything (bootstrap)
3
 *
4
 * Initializes the stack pointer and jumps to main().
5
 */
6
 
7
#include "regdef.h"
8
 
9
        .text
10
        .align  2
11
        .globl  _start
12
        .ent    _start
13
_start:
14
        .set noreorder
15
 
16
        j       reset_handler
17
        nop
18
 
19
        j       handling_exception
20
        nop
21
 
22
 
23
reset_handler:
24
        /* Setup stack pointer */
25
        la      sp, _sp
26
 
27
        /* Clear bss */
28
        la      t0, 0x00000000      /* First address */
29
        la      t1, _end        /* Last  address */
30
 
31
        mfc0 k0, $12
32
        add k0, k0, 3
33
        mtc0 k0, $12
34
 
35
 
36
        jal     main
37
        nop
38
        j loop
39
        nop
40
 
41
handling_exception:
42
        nop
43
        mfc0 k0, $13
44
        mfc0 k1, $14
45
 
46
        srl k0, k0, 2
47
        andi k0, k0, 0x1F
48
 
49
        beq k0, $0, handling_interrupt
50
        nop
51
 
52
        add $11, $0, $0
53
        addiu $11, k1, 4
54
        mtc0 $11, $14
55
        eret
56
        nop
57
 
58
 
59
handling_interrupt:
60
        nop
61
        eret
62
        nop
63
 
64
        /* Run endless loop when the program terminates */
65
loop:
66
        j       loop
67
 
68
        .set    reorder
69
        .end    _start

powered by: WebSVN 2.1.0

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