summaryrefslogtreecommitdiff
path: root/libcpu/ti-dsp/c6x/vector.asm
blob: 9c74de1bb745a242db5798693214eca1aa38d39d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
;
; Copyright (c) 2021, Shenzhen Academy of Aerospace Technology
;
; SPDX-License-Identifier: Apache-2.0
;
; Change Logs:
; Date           Author       Notes
; 2021-11-16     Dystopia     the first version
;

;-----------------------------------------------------------
;           interrupt vector table for C6000 DSP
;-----------------------------------------------------------

;-----------------------------------------------------------
;                       extern function
;-----------------------------------------------------------
    .ref _c_int00       ; entry point
    .ref _nmi_handler
    .ref _bad_handler
    .ref _int4_handler
    .ref _int5_handler
    .ref _int6_handler
    .ref _int7_handler
    .ref _int8_handler
    .ref _int9_handler
    .ref _int10_handler
    .ref _int11_handler
    .ref _int12_handler
    .ref _int13_handler
    .ref _int14_handler
    .ref _int15_handler

;-----------------------------------------------------------
;                       macro definition
;-----------------------------------------------------------

;
; create interrupt vector for reset (interrupt 0)
;
VEC_RESET .macro addr
    MVKL  addr,B0
    MVKH  addr,B0
    B     B0
    MVC   PCE1,B0
    NOP   4
    .align 32
    .endm

;
; create interrupt vector for other used interrupts
;
IRQVEC  .macro  __name, __isr
    .align 32
    .hidden __name
    .global __name
__name:
    B   .S2 __isr
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
        .endm
;
;-----------------------------------------------------------
;

;
; vector table
;
    .sect ".vecs"
    .align 32
    .global vector
vector:
    VEC_RESET       _c_int00
    IRQVEC NMI,     _nmi_handler
    IRQVEC AINT,    _bad_handler
    IRQVEC MSGINT,  _bad_handler
    IRQVEC INT4,    _int4_handler
    IRQVEC INT5,    _int5_handler
    IRQVEC INT6,    _int6_handler
    IRQVEC INT7,    _int7_handler
    IRQVEC INT8,    _int8_handler
    IRQVEC INT9,    _int9_handler
    IRQVEC INT10,   _int10_handler
    IRQVEC INT11,   _int11_handler
    IRQVEC INT12,   _int12_handler
    IRQVEC INT13,   _int13_handler
    IRQVEC INT14,   _int14_handler
    IRQVEC INT15,   _int15_handler

    .end