Subversion Repositories HelenOS-historic

Rev

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

Rev 736 Rev 919
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/register.h>
-
 
30
 
29
.text
31
.text
30
 
32
 
31
.global memcpy
33
.global memcpy
32
memcpy:
34
memcpy:
33
	br _memcpy
35
	br _memcpy
Line 44... Line 46...
44
panic_printf:
46
panic_printf:
45
	{
47
	{
46
		br.call.sptk.many b0=printf
48
		br.call.sptk.many b0=printf
47
	}
49
	}
48
	br halt
50
	br halt
-
 
51
 
-
 
52
/** Switch to userspace - low level code.
-
 
53
 *
-
 
54
 * @param in0 Userspace entry point address.
-
 
55
 * @param in1 Userspace stack pointer address.
-
 
56
 * @param in2 Userspace register stack pointer address.
-
 
57
 * @param in3 Value to be stored in IPSR.
-
 
58
 * @param in4 Value to be stored in RSC.
-
 
59
 */
-
 
60
.global switch_to_userspace
-
 
61
switch_to_userspace:
-
 
62
	alloc loc0 = ar.pfs, 5, 3, 0, 0
-
 
63
	rsm (PSR_IC_MASK | PSR_I_MASK)		/* disable interruption collection  and interrupts */
-
 
64
	srlz.d ;;
-
 
65
	srlz.i ;;
-
 
66
	
-
 
67
	mov cr.ipsr = in3
-
 
68
	mov cr.iip = in0
-
 
69
	mov r12 = in1
-
 
70
 
-
 
71
	xor r1 = r1, r1
-
 
72
	
-
 
73
	mov loc1 = cr.ifs
-
 
74
	movl loc2 = PFM_MASK ;;
-
 
75
	and loc1 = loc2, loc1 ;;
-
 
76
	mov cr.ifs = loc1 ;;			/* prevent decrementing BSP by rfi */
-
 
77
 
-
 
78
	invala
-
 
79
	
-
 
80
	mov loc1 = ar.rsc ;;
-
 
81
	and loc1 = ~3, loc1 ;;			
-
 
82
	mov ar.rsc = loc1 ;;			/* put RSE into enforced lazy mode */
-
 
83
 
-
 
84
	flushrs ;;
-
 
85
	
-
 
86
	mov ar.bspstore = in2 ;;
-
 
87
	mov ar.rsc = in4 ;;
-
 
88
	
-
 
89
	rfi ;;