1 | /*
|
---|
2 | * SPDX-FileCopyrightText: 2003-2004 Jakub Jermar
|
---|
3 | *
|
---|
4 | * SPDX-License-Identifier: BSD-3-Clause
|
---|
5 | */
|
---|
6 |
|
---|
7 | #include <abi/asmtool.h>
|
---|
8 | #include <arch/context_struct.h>
|
---|
9 |
|
---|
10 | .text
|
---|
11 |
|
---|
12 | .set noat
|
---|
13 | .set noreorder
|
---|
14 | .set nomacro
|
---|
15 |
|
---|
16 | FUNCTION_BEGIN(context_save_arch)
|
---|
17 | sw $s0, CONTEXT_OFFSET_S0($a0)
|
---|
18 | sw $s1, CONTEXT_OFFSET_S1($a0)
|
---|
19 | sw $s2, CONTEXT_OFFSET_S2($a0)
|
---|
20 | sw $s3, CONTEXT_OFFSET_S3($a0)
|
---|
21 | sw $s4, CONTEXT_OFFSET_S4($a0)
|
---|
22 | sw $s5, CONTEXT_OFFSET_S5($a0)
|
---|
23 | sw $s6, CONTEXT_OFFSET_S6($a0)
|
---|
24 | sw $s7, CONTEXT_OFFSET_S7($a0)
|
---|
25 | sw $s8, CONTEXT_OFFSET_S8($a0)
|
---|
26 | sw $gp, CONTEXT_OFFSET_GP($a0)
|
---|
27 | sw $k1, CONTEXT_OFFSET_TP($a0)
|
---|
28 |
|
---|
29 | sw $ra, CONTEXT_OFFSET_PC($a0)
|
---|
30 | sw $sp, CONTEXT_OFFSET_SP($a0)
|
---|
31 |
|
---|
32 | # context_save returns 1
|
---|
33 | j $31
|
---|
34 | li $2, 1
|
---|
35 | FUNCTION_END(context_save_arch)
|
---|
36 |
|
---|
37 | FUNCTION_BEGIN(context_restore_arch)
|
---|
38 | lw $s0, CONTEXT_OFFSET_S0($a0)
|
---|
39 | lw $s1, CONTEXT_OFFSET_S1($a0)
|
---|
40 | lw $s2, CONTEXT_OFFSET_S2($a0)
|
---|
41 | lw $s3, CONTEXT_OFFSET_S3($a0)
|
---|
42 | lw $s4, CONTEXT_OFFSET_S4($a0)
|
---|
43 | lw $s5, CONTEXT_OFFSET_S5($a0)
|
---|
44 | lw $s6, CONTEXT_OFFSET_S6($a0)
|
---|
45 | lw $s7, CONTEXT_OFFSET_S7($a0)
|
---|
46 | lw $s8, CONTEXT_OFFSET_S8($a0)
|
---|
47 | lw $gp, CONTEXT_OFFSET_GP($a0)
|
---|
48 | lw $k1, CONTEXT_OFFSET_TP($a0)
|
---|
49 |
|
---|
50 | lw $ra, CONTEXT_OFFSET_PC($a0)
|
---|
51 | lw $sp, CONTEXT_OFFSET_SP($a0)
|
---|
52 |
|
---|
53 | # context_restore returns 0
|
---|
54 | j $31
|
---|
55 | xor $2, $2
|
---|
56 | FUNCTION_END(context_restore_arch)
|
---|