libHPDMC with manual calibration
[mw/milkymist.git] / software / libhpdmc / test.S
1 /* 
2  * libHPDMC - SDRAM initialization runtime for Milkymist bootloaders
3  * Copyright (C) 2010 Sebastien Bourdeauducq
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation;
8  * version 3 of the License.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  * 
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, see <http://www.gnu.org/licenses>.
17  */
18
19 #include <hw/uart.h>
20
21 .section .text, "ax", @progbits
22 .global _start, _sdram_init_return
23 _start:
24 _reset_handler:
25         xor     r0, r0, r0
26         wcsr    IE, r0
27         mvhi    r1, hi(_reset_handler)
28         ori     r1, r1, lo(_reset_handler)
29         wcsr    EBA, r1
30         xor     r2, r2, r2
31         bi      _sdram_init
32         nop
33
34 _breakpoint_handler:
35         nop; nop; nop; nop
36         nop; nop; nop; nop
37
38 _instruction_bus_error_handler:
39         nop; nop; nop; nop
40         nop; nop; nop; nop
41
42 _watchpoint_hander:
43         nop; nop; nop; nop
44         nop; nop; nop; nop
45
46 _data_bus_error_handler:
47         nop; nop; nop; nop
48         nop; nop; nop; nop
49
50 _divide_by_zero_handler:
51         nop; nop; nop; nop
52         nop; nop; nop; nop
53
54 _interrupt_handler:
55         nop; nop; nop; nop
56         nop; nop; nop; nop
57
58 _system_call_handler:
59         nop; nop; nop; nop
60         nop; nop; nop; nop 
61
62 _sdram_init_return:
63         mvhi    r1, hi(CSR_UART_RXTX)
64         ori     r1, r1, lo(CSR_UART_RXTX)
65         mvhi    r2, hi(endmsg)
66         ori     r2, r2, lo(endmsg)
67 writeloop:
68         lb      r3, (r2+0)
69         be      r3, r0, endloop
70         sw      (r1+0), r3
71         addi    r2, r2, 1
72         bi      writeloop
73 endloop:
74         bi      endloop
75
76 .section .rodata, "a"
77 endmsg: .string "*** returned from libHPDMC\n\0"