source: mainline/kernel/arch/riscv64/src/context.S@ 8a0c52a

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 8a0c52a was 5f2926a, checked in by Martin Decky <martin@…>, 8 years ago

riscv64: context saving/restoring routines

  • Property mode set to 100644
File size: 2.6 KB
Line 
1#
2# Copyright (c) 2003-2004 Jakub Jermar
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 <abi/asmtool.h>
30#include <arch/context_struct.h>
31
32.text
33
34FUNCTION_BEGIN(context_save_arch)
35 sd gp, CONTEXT_OFFSET_GP(a0)
36 sd tp, CONTEXT_OFFSET_TP(a0)
37 sd s0, CONTEXT_OFFSET_S0(a0)
38 sd s1, CONTEXT_OFFSET_S1(a0)
39 sd s2, CONTEXT_OFFSET_S2(a0)
40 sd s3, CONTEXT_OFFSET_S3(a0)
41 sd s4, CONTEXT_OFFSET_S4(a0)
42 sd s5, CONTEXT_OFFSET_S5(a0)
43 sd s6, CONTEXT_OFFSET_S6(a0)
44 sd s7, CONTEXT_OFFSET_S7(a0)
45 sd s8, CONTEXT_OFFSET_S8(a0)
46 sd s9, CONTEXT_OFFSET_S9(a0)
47 sd s10, CONTEXT_OFFSET_S10(a0)
48 sd s11, CONTEXT_OFFSET_S11(a0)
49
50 sd ra, CONTEXT_OFFSET_PC(a0)
51 sd sp, CONTEXT_OFFSET_SP(a0)
52
53 # context_save returns 1
54 li a0, 1
55 ret
56FUNCTION_END(context_save_arch)
57
58FUNCTION_BEGIN(context_restore_arch)
59 ld gp, CONTEXT_OFFSET_GP(a0)
60 ld tp, CONTEXT_OFFSET_TP(a0)
61 ld s0, CONTEXT_OFFSET_S0(a0)
62 ld s1, CONTEXT_OFFSET_S1(a0)
63 ld s2, CONTEXT_OFFSET_S2(a0)
64 ld s3, CONTEXT_OFFSET_S3(a0)
65 ld s4, CONTEXT_OFFSET_S4(a0)
66 ld s5, CONTEXT_OFFSET_S5(a0)
67 ld s6, CONTEXT_OFFSET_S6(a0)
68 ld s7, CONTEXT_OFFSET_S7(a0)
69 ld s8, CONTEXT_OFFSET_S8(a0)
70 ld s9, CONTEXT_OFFSET_S9(a0)
71 ld s10, CONTEXT_OFFSET_S10(a0)
72 ld s11, CONTEXT_OFFSET_S11(a0)
73
74 ld ra, CONTEXT_OFFSET_PC(a0)
75 ld sp, CONTEXT_OFFSET_SP(a0)
76
77 # context_restore returns 0
78 li a0, 0
79 ret
80FUNCTION_END(context_restore_arch)
Note: See TracBrowser for help on using the repository browser.