source: mainline/arch/sparc64/loader/asm.S@ fec35544

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since fec35544 was fec35544, checked in by Jakub Jermar <jakub@…>, 19 years ago

sparc64 is now booted by HelenOS boot loader.

  • Property mode set to 100644
File size: 2.4 KB
RevLine 
[b7b5f83]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.text
30
31.global halt
32.global memcpy
33.global jump_to_kernel
34
35halt:
36 b halt
37 nop
38
39memcpy:
[c82950a]40 .register %g2, #scratch
41 .register %g3, #scratch
42 add %o1, 7, %g1
43 and %g1, -8, %g1
44 cmp %o1, %g1
45 be,pn %xcc, 3f
46 add %o0, 7, %g1
47 mov 0, %g3
480:
49 brz,pn %o2, 2f
50 mov 0, %g2
511:
52 ldub [%g3 + %o1], %g1
53 add %g2, 1, %g2
54 cmp %o2, %g2
55 stb %g1, [%g3 + %o0]
56 bne,pt %xcc, 1b
57 mov %g2, %g3
582:
59 jmp %o7 + 8 ! exit point
60 mov %o1, %o0
613:
62 and %g1, -8, %g1
63 cmp %o0, %g1
64 bne,pt %xcc, 0b
65 mov 0, %g3
66 srlx %o2, 3, %g4
67 brz,pn %g4, 5f
68 mov 0, %g5
694:
70 sllx %g3, 3, %g2
71 add %g5, 1, %g3
72 ldx [%o1 + %g2], %g1
73 mov %g3, %g5
74 cmp %g4, %g3
75 bne,pt %xcc, 4b
76 stx %g1, [%o0 + %g2]
775:
78 and %o2, 7, %o2
79 brz,pn %o2, 2b
80 sllx %g4, 3, %g1
81 mov 0, %g2
82 add %g1, %o0, %o0
83 add %g1, %o1, %g4
84 mov 0, %g3
856:
86 ldub [%g2 + %g4], %g1
87 stb %g1, [%g2 + %o0]
88 add %g3, 1, %g2
89 cmp %o2, %g2
90 bne,pt %xcc, 6b
91 mov %g2, %g3
92
93 jmp %o7 + 8 ! exit point
94 mov %o1, %o0
[b7b5f83]95
96jump_to_kernel:
[fec35544]97 set ofw, %l0
98 jmp %o0 ! jump to kernel
99 ldx [%l0], %o4 ! pass OpenFirmware address in %o4
Note: See TracBrowser for help on using the repository browser.