source: mainline/boot/arch/sparc64/loader/asm.S@ fb0e6f03

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since fb0e6f03 was fb0e6f03, checked in by jermar <jermar@…>, 17 years ago

Merge the boot branch.

  • Property mode set to 100644
File size: 2.8 KB
Line 
1#
2# Copyright (C) 2006 Martin Decky
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions
7# are met:
8#
9# - Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# - Redistributions in binary form must reproduce the above copyright
12# notice, this list of conditions and the following disclaimer in the
13# documentation and/or other materials provided with the distribution.
14# - The name of the author may not be used to endorse or promote products
15# derived from this software without specific prior written permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27#
28
29#define STACK_WINDOW_SAVE_AREA_SIZE (16*8)
30
31#define PSTATE_AM_BIT 8
32
33.text
34
35.global halt
36.global memcpy
37.global jump_to_kernel
38
39halt:
40 b halt
41 nop
42
43memcpy:
44 .register %g2, #scratch
45 .register %g3, #scratch
46 add %o1, 7, %g1
47 and %g1, -8, %g1
48 cmp %o1, %g1
49 be,pn %xcc, 3f
50 add %o0, 7, %g1
51 mov 0, %g3
520:
53 brz,pn %o2, 2f
54 mov 0, %g2
551:
56 ldub [%g3 + %o1], %g1
57 add %g2, 1, %g2
58 cmp %o2, %g2
59 stb %g1, [%g3 + %o0]
60 bne,pt %xcc, 1b
61 mov %g2, %g3
622:
63 jmp %o7 + 8 ! exit point
64 mov %o1, %o0
653:
66 and %g1, -8, %g1
67 cmp %o0, %g1
68 bne,pt %xcc, 0b
69 mov 0, %g3
70 srlx %o2, 3, %g4
71 brz,pn %g4, 5f
72 mov 0, %g5
734:
74 sllx %g3, 3, %g2
75 add %g5, 1, %g3
76 ldx [%o1 + %g2], %g1
77 mov %g3, %g5
78 cmp %g4, %g3
79 bne,pt %xcc, 4b
80 stx %g1, [%o0 + %g2]
815:
82 and %o2, 7, %o2
83 brz,pn %o2, 2b
84 sllx %g4, 3, %g1
85 mov 0, %g2
86 add %g1, %o0, %o0
87 add %g1, %o1, %g4
88 mov 0, %g3
896:
90 ldub [%g2 + %g4], %g1
91 stb %g1, [%g2 + %o0]
92 add %g3, 1, %g2
93 cmp %o2, %g2
94 bne,pt %xcc, 6b
95 mov %g2, %g3
96
97 jmp %o7 + 8 ! exit point
98 mov %o1, %o0
99
100jump_to_kernel:
101 set ofw_cif, %l0
102 jmp %o0 ! jump to kernel
103 ldx [%l0], %o4 ! pass OpenFirmware address in %o4
104
105.global ofw
106ofw:
107 save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp
108 set ofw_cif, %l0
109 ldx [%l0], %l0
110
111 rdpr %pstate, %l1
112 and %l1, ~PSTATE_AM_BIT, %l2
113 wrpr %l2, 0, %pstate
114
115 jmpl %l0, %o7
116 mov %i0, %o0
117
118 wrpr %l1, 0, %pstate
119
120 ret
121 restore %o0, 0, %o0
Note: See TracBrowser for help on using the repository browser.