Subversion Repositories HelenOS-historic

Rev

Rev 914 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
913 decky 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
#include "regname.h"
30
#include "spr.h"
31
 
32
.text
33
 
34
.global memsetb
35
.global memcpy
36
.global halt
37
.global jump_to_kernel
38
 
39
memsetb:
40
	rlwimi r5, r5, 8, 16, 23
41
	rlwimi r5, r5, 16, 0, 15
42
 
43
	addi r14, r3, -4
44
 
45
	cmplwi 0, r4, 4
46
	blt 7f
47
 
48
	stwu r5, 4(r14)
49
	beqlr
50
 
51
	andi. r15, r14, 3
52
	add r4, r15, r4
53
	subf r14, r15, r14
54
	srwi r15, r4, 2
55
	mtctr r15
56
 
57
	bdz 6f
58
 
59
	1:
60
		stwu r5, 4(r14)
61
		bdnz 1b
62
 
63
	6:
64
 
65
	andi. r4, r4, 3
66
 
67
	7:
68
 
69
	cmpwi 0, r4, 0
70
	beqlr
71
 
72
	mtctr r4
73
	addi r6, r6, 3
74
 
75
	8:
76
 
77
	stbu r5, 1(r14)
78
	bdnz 8b
79
 
80
	blr
81
 
82
memcpy:
83
	srwi. r7, r5, 3
84
	addi r6, r3, -4
85
	addi r4, r4, -4
86
	beq	2f
87
 
88
	andi. r0, r6, 3
89
	mtctr r7
90
	bne 5f
91
 
92
	1:
93
 
94
	lwz r7, 4(r4)
95
	lwzu r8, 8(r4)
96
	stw r7, 4(r6)
97
	stwu r8, 8(r6)
98
	bdnz 1b
99
 
100
	andi. r5, r5, 7
101
 
102
	2:
103
 
104
	cmplwi 0, r5, 4
105
	blt 3f
106
 
107
	lwzu r0, 4(r4)
108
	addi r5, r5, -4
109
	stwu r0, 4(r6)
110
 
111
	3:
112
 
113
	cmpwi 0, r5, 0
114
	beqlr
115
	mtctr r5
116
	addi r4, r4, 3
117
	addi r6, r6, 3
118
 
119
	4:
120
 
121
	lbzu r0, 1(r4)
122
	stbu r0, 1(r6)
123
	bdnz 4b
124
	blr
125
 
126
	5:
127
 
128
	subfic r0, r0, 4
129
	mtctr r0
130
 
131
	6:
132
 
133
	lbz r7, 4(r4)
134
	addi r4, r4, 1
135
	stb r7, 4(r6)
136
	addi r6, r6, 1
137
	bdnz 6b
138
	subf r5, r0, r5
139
	rlwinm. r7, r5, 32-3, 3, 31
140
	beq 2b
141
	mtctr r7
142
	b 1b
143
 
144
halt:
145
	b halt
146
 
147
jump_to_kernel:
148
	mfmsr r4
149
	andis. r4, r4, (~MSR_DR | MSR_IR) >> 16
150
	mtspr SPRN_SRR0, r3
151
	mtspr SPRN_SRR1, r4
152
	sync
153
	RFI