HACK
[asbestos.git] / stage1 / thunks.S
blobae4c75d4039c44a2d5a45133e69b0f1e01f503e8
1 /*  thunks.S - lv2 thunks for TOC fixup and lv1 calls
3 Copyright (C) 2010-2011  Hector Martin "marcan" <hector@marcansoft.com>
5 This code is licensed to you under the terms of the GNU GPL, version 2;
6 see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
7 */
9 #include "../common/assembly.h"
10 #define LV1_PANIC 255
12         .text
13         .align 3
15 # shutdown
16         .global panic
17 panic:
18         li r3, 0
19         li r11, LV1_PANIC
20         lv1call
22 # reboot
23         .global reboot
24 reboot:
25         li r3, 1
26         li r11, LV1_PANIC
27         lv1call
29 .macro lv2thunk name
30         .global \name
31 \name:
32         mflr r0
33         bl save
34         bl _\name
35         b restore
36 .endm
38         lv2thunk usbGetDescriptor
39         lv2thunk usbOpenEndpoint
40         lv2thunk usbControlTransfer
41         lv2thunk printf
43 save:
44         std r0, 32(sp)
45         std toc, 40(sp)
46         clrrdi toc, toc, 32
47         oris toc, toc, __lv2toc@h
48         ori toc, toc, __lv2toc@l
49         blr
51 restore:
52         ld toc, 40(sp)
53         ld r0, 32(sp)
54         mtlr r0
55         blr