1/*
2 * Copyright (c) 2015 Travis Geiselbrecht
3 *
4 * Use of this source code is governed by a MIT-style
5 * license that can be found in the LICENSE file or at
6 * https://opensource.org/licenses/MIT
7 */
8#include <lk/asm.h>
9
10.section ".vectors", "ax"
11.globl _vectab
12_vectab:
13/* vector table here */
14    # start vector
15    brai start
16    # user exception
17    brai unhandled_exception
18    # interrupt
19    brai microblaze_irq
20    # break
21    brai unhandled_exception
22    # hardware exception
23    brai unhandled_exception
24
25    # reserved for future
26.fill (0x50 - 0x28)
27
28.section ".text.boot"
29FUNCTION(start)
30    # set the default stack
31    addik   r1, r0, default_stack_top
32
33    # set up small data pointers
34    addik   r2, r0, _SDATA2_START__
35    addik   r13, r0, _SDATA_START__
36
37    # set the processor mode to default
38    mts     rmsr, r0
39
40    # zero out bss sections
41    addik   r5, r0, __bss_start
42    addik   r6, r0, 0
43    rsubik  r7, r5, __bss_end
44    brlid   r15, memset
45    nop
46
47    # arguments to main
48    addik   r5, r0, 1
49    addik   r6, r0, 2
50    addik   r7, r0, 3
51    brlid   r15, lk_main
52    addik   r8, r0, 4
53
54    # shouldn't be here
55    bri     .
56
57FUNCTION(unhandled_exception)
58    bri     .
59
60.bss
61.align 3
62LOCAL_DATA(default_stack)
63    .skip 4096
64LOCAL_DATA(default_stack_top)
65