1 | # |
---|
2 | # Copyright (c) 2006 Martin Decky |
---|
3 | # Copyright (c) 2006 Jakub Jermar |
---|
4 | # All rights reserved. |
---|
5 | # |
---|
6 | # Redistribution and use in source and binary forms, with or without |
---|
7 | # modification, are permitted provided that the following conditions |
---|
8 | # are met: |
---|
9 | # |
---|
10 | # - Redistributions of source code must retain the above copyright |
---|
11 | # notice, this list of conditions and the following disclaimer. |
---|
12 | # - Redistributions in binary form must reproduce the above copyright |
---|
13 | # notice, this list of conditions and the following disclaimer in the |
---|
14 | # documentation and/or other materials provided with the distribution. |
---|
15 | # - The name of the author may not be used to endorse or promote products |
---|
16 | # derived from this software without specific prior written permission. |
---|
17 | # |
---|
18 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
---|
19 | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
---|
20 | # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
---|
21 | # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
---|
22 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
---|
23 | # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
---|
24 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
---|
25 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
---|
26 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
---|
27 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
---|
28 | # |
---|
29 | |
---|
30 | /* |
---|
31 | * This code is originally in asm.S. This is the only function used from that |
---|
32 | * file, so it has been relocated to this new file ofw.S which is not actually |
---|
33 | * located in the HelenOS code base. |
---|
34 | */ |
---|
35 | |
---|
36 | #include <boot/stack.h> |
---|
37 | #include <boot/register.h> |
---|
38 | |
---|
39 | .register %g2, #scratch |
---|
40 | .register %g3, #scratch |
---|
41 | |
---|
42 | .text |
---|
43 | |
---|
44 | .global ofw |
---|
45 | ofw: |
---|
46 | save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp |
---|
47 | set ofw_cif, %l0 |
---|
48 | ldx [%l0], %l0 |
---|
49 | |
---|
50 | rdpr %pstate, %l1 |
---|
51 | and %l1, ~PSTATE_AM_BIT, %l2 |
---|
52 | wrpr %l2, 0, %pstate |
---|
53 | |
---|
54 | jmpl %l0, %o7 |
---|
55 | mov %i0, %o0 |
---|
56 | |
---|
57 | clr %g4 ! correction for gcc's ABI change |
---|
58 | |
---|
59 | wrpr %l1, 0, %pstate |
---|
60 | |
---|
61 | ret |
---|
62 | restore %o0, 0, %o0 |
---|