Subversion Repositories HelenOS-historic

Rev

Rev 534 | Rev 847 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 534 Rev 846
Line 24... Line 24...
24
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
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
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.
26
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
#
27
#
28
 
28
 
-
 
29
#include <arch/boot/boot.h>
-
 
30
 
29
.register %g2, #scratch
31
.register %g2, #scratch
30
.register %g3, #scratch
32
.register %g3, #scratch
31
.register %g6, #scratch
33
.register %g6, #scratch
32
.register %g7, #scratch
34
.register %g7, #scratch
33
 
35
 
Line 48... Line 50...
48
.half 0
50
.half 0
49
 
51
 
50
.align 8
52
.align 8
51
 
53
 
52
1:
54
1:
-
 
55
	flushw				! flush all but the active register window
-
 
56
 
-
 
57
	/*
-
 
58
	 * Prepare to copy the kernel image to 4M.
-
 
59
	 */
-
 
60
 
-
 
61
	set LMA, %g1			! source address
-
 
62
	set VMA, %g2			! destination address (VMA)
-
 
63
	set hardcoded_ktext_size, %g3	! link address of hardcoded_ktext_size
-
 
64
	set hardcoded_kdata_size, %g4	! link address of hardcoded_kdata_size
-
 
65
 
-
 
66
	sub %g3, %g2, %g3		! offset of hardcoded_ktext_size from the beginning of the load address
-
 
67
	sub %g4, %g2, %g4		! offset of hardcoded_kdata_size from the beginning of the load address
-
 
68
	
-
 
69
	ldx [%g3 + %g1], %g3		! hardcoded_ktext_size -> %g3
-
 
70
	ldx [%g4 + %g1], %g4		! hardcoded_kdata_size -> %g4
-
 
71
 
-
 
72
	add %g3, %g4, %g3		! size of kernel text and data
-
 
73
 
-
 
74
	/*
-
 
75
	 * Start copying the kernel from higher addresses towards lower addresses.
-
 
76
	 */
-
 
77
 
-
 
78
2:	dec %g3
-
 
79
	ldub [%g1 + %g3], %g4
-
 
80
	stb %g4, [%g2 + %g3]
-
 
81
	cmp %g3, 0
-
 
82
	bnz 2b
-
 
83
	nop
-
 
84
 
-
 
85
	set relocated, %g1
-
 
86
	jmp %g1
-
 
87
	nop
-
 
88
 
-
 
89
relocated:
53
	set ofw, %l0
90
	set ofw, %l0
54
 
91
 
55
	call ofw_init
92
	call ofw_init
56
	stx %o4, [%l0]
93
	stx %o4, [%l0]
57
 
94