source: mainline/kernel/arch/ppc32/src/context.S@ 94d614e

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

Move everything to kernel/.

  • Property mode set to 100644
File size: 2.9 KB
Line 
1#
2# Copyright (C) 2005 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 <arch/asm/regname.h>
30#include <arch/context_offset.h>
31
32.text
33
34.global context_save_arch
35.global context_restore_arch
36
37.macro CONTEXT_STORE r
38 stw sp, OFFSET_SP(\r)
39 stw r2, OFFSET_R2(\r)
40 stw r13, OFFSET_R13(\r)
41 stw r14, OFFSET_R14(\r)
42 stw r15, OFFSET_R15(\r)
43 stw r16, OFFSET_R16(\r)
44 stw r17, OFFSET_R17(\r)
45 stw r18, OFFSET_R18(\r)
46 stw r19, OFFSET_R19(\r)
47 stw r20, OFFSET_R20(\r)
48 stw r21, OFFSET_R21(\r)
49 stw r22, OFFSET_R22(\r)
50 stw r23, OFFSET_R23(\r)
51 stw r24, OFFSET_R24(\r)
52 stw r25, OFFSET_R25(\r)
53 stw r26, OFFSET_R26(\r)
54 stw r27, OFFSET_R27(\r)
55 stw r28, OFFSET_R28(\r)
56 stw r29, OFFSET_R29(\r)
57 stw r30, OFFSET_R30(\r)
58 stw r31, OFFSET_R31(\r)
59.endm
60
61.macro CONTEXT_LOAD r
62 lwz sp, OFFSET_SP(\r)
63 lwz r2, OFFSET_R2(\r)
64 lwz r13, OFFSET_R13(\r)
65 lwz r14, OFFSET_R14(\r)
66 lwz r15, OFFSET_R15(\r)
67 lwz r16, OFFSET_R16(\r)
68 lwz r17, OFFSET_R17(\r)
69 lwz r18, OFFSET_R18(\r)
70 lwz r19, OFFSET_R19(\r)
71 lwz r20, OFFSET_R20(\r)
72 lwz r21, OFFSET_R21(\r)
73 lwz r22, OFFSET_R22(\r)
74 lwz r23, OFFSET_R23(\r)
75 lwz r24, OFFSET_R24(\r)
76 lwz r25, OFFSET_R25(\r)
77 lwz r26, OFFSET_R26(\r)
78 lwz r27, OFFSET_R27(\r)
79 lwz r28, OFFSET_R28(\r)
80 lwz r29, OFFSET_R29(\r)
81 lwz r30, OFFSET_R30(\r)
82 lwz r31, OFFSET_R31(\r)
83.endm
84
85context_save_arch:
86 CONTEXT_STORE r3
87
88 mflr r4
89 stw r4, OFFSET_PC(r3)
90
91 mfcr r4
92 stw r4, OFFSET_CR(r3)
93
94 # context_save returns 1
95 li r3, 1
96 blr
97
98context_restore_arch:
99 CONTEXT_LOAD r3
100
101 lwz r4, OFFSET_CR(r3)
102 mtcr r4
103
104 lwz r4, OFFSET_PC(r3)
105 mtlr r4
106
107 # context_restore returns 0
108 li r3, 0
109 blr
Note: See TracBrowser for help on using the repository browser.