Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * asmmacro.h: Assembler macros to make things easier to read. | |
3 | * | |
79add627 | 4 | * Copyright (C) 1996 David S. Miller (davem@davemloft.net) |
1da177e4 LT |
5 | * Copyright (C) 1998, 1999, 2003 Ralf Baechle |
6 | */ | |
7 | #ifndef _ASM_ASMMACRO_32_H | |
8 | #define _ASM_ASMMACRO_32_H | |
9 | ||
048eb582 | 10 | #include <asm/asm-offsets.h> |
1da177e4 LT |
11 | #include <asm/regdef.h> |
12 | #include <asm/fpregdef.h> | |
13 | #include <asm/mipsregs.h> | |
14 | ||
1da177e4 | 15 | .macro fpu_save_single thread tmp=t0 |
842dfc11 ML |
16 | .set push |
17 | SET_HARDFLOAT | |
1da177e4 | 18 | cfc1 \tmp, fcr31 |
98b0429b RB |
19 | s.d $f0, THREAD_FPR0(\thread) |
20 | s.d $f2, THREAD_FPR2(\thread) | |
21 | s.d $f4, THREAD_FPR4(\thread) | |
22 | s.d $f6, THREAD_FPR6(\thread) | |
23 | s.d $f8, THREAD_FPR8(\thread) | |
24 | s.d $f10, THREAD_FPR10(\thread) | |
25 | s.d $f12, THREAD_FPR12(\thread) | |
26 | s.d $f14, THREAD_FPR14(\thread) | |
27 | s.d $f16, THREAD_FPR16(\thread) | |
28 | s.d $f18, THREAD_FPR18(\thread) | |
29 | s.d $f20, THREAD_FPR20(\thread) | |
30 | s.d $f22, THREAD_FPR22(\thread) | |
31 | s.d $f24, THREAD_FPR24(\thread) | |
32 | s.d $f26, THREAD_FPR26(\thread) | |
33 | s.d $f28, THREAD_FPR28(\thread) | |
34 | s.d $f30, THREAD_FPR30(\thread) | |
1da177e4 | 35 | sw \tmp, THREAD_FCR31(\thread) |
842dfc11 | 36 | .set pop |
1da177e4 LT |
37 | .endm |
38 | ||
1da177e4 | 39 | .macro fpu_restore_single thread tmp=t0 |
842dfc11 ML |
40 | .set push |
41 | SET_HARDFLOAT | |
1da177e4 | 42 | lw \tmp, THREAD_FCR31(\thread) |
98b0429b RB |
43 | l.d $f0, THREAD_FPR0(\thread) |
44 | l.d $f2, THREAD_FPR2(\thread) | |
45 | l.d $f4, THREAD_FPR4(\thread) | |
46 | l.d $f6, THREAD_FPR6(\thread) | |
47 | l.d $f8, THREAD_FPR8(\thread) | |
48 | l.d $f10, THREAD_FPR10(\thread) | |
49 | l.d $f12, THREAD_FPR12(\thread) | |
50 | l.d $f14, THREAD_FPR14(\thread) | |
51 | l.d $f16, THREAD_FPR16(\thread) | |
52 | l.d $f18, THREAD_FPR18(\thread) | |
53 | l.d $f20, THREAD_FPR20(\thread) | |
54 | l.d $f22, THREAD_FPR22(\thread) | |
55 | l.d $f24, THREAD_FPR24(\thread) | |
56 | l.d $f26, THREAD_FPR26(\thread) | |
57 | l.d $f28, THREAD_FPR28(\thread) | |
58 | l.d $f30, THREAD_FPR30(\thread) | |
1da177e4 | 59 | ctc1 \tmp, fcr31 |
842dfc11 | 60 | .set pop |
1da177e4 LT |
61 | .endm |
62 | ||
63 | .macro cpu_save_nonscratch thread | |
64 | LONG_S s0, THREAD_REG16(\thread) | |
65 | LONG_S s1, THREAD_REG17(\thread) | |
66 | LONG_S s2, THREAD_REG18(\thread) | |
67 | LONG_S s3, THREAD_REG19(\thread) | |
68 | LONG_S s4, THREAD_REG20(\thread) | |
69 | LONG_S s5, THREAD_REG21(\thread) | |
70 | LONG_S s6, THREAD_REG22(\thread) | |
71 | LONG_S s7, THREAD_REG23(\thread) | |
72 | LONG_S sp, THREAD_REG29(\thread) | |
73 | LONG_S fp, THREAD_REG30(\thread) | |
74 | .endm | |
75 | ||
76 | .macro cpu_restore_nonscratch thread | |
77 | LONG_L s0, THREAD_REG16(\thread) | |
78 | LONG_L s1, THREAD_REG17(\thread) | |
79 | LONG_L s2, THREAD_REG18(\thread) | |
80 | LONG_L s3, THREAD_REG19(\thread) | |
81 | LONG_L s4, THREAD_REG20(\thread) | |
82 | LONG_L s5, THREAD_REG21(\thread) | |
83 | LONG_L s6, THREAD_REG22(\thread) | |
84 | LONG_L s7, THREAD_REG23(\thread) | |
85 | LONG_L sp, THREAD_REG29(\thread) | |
86 | LONG_L fp, THREAD_REG30(\thread) | |
87 | LONG_L ra, THREAD_REG31(\thread) | |
88 | .endm | |
89 | ||
90 | #endif /* _ASM_ASMMACRO_32_H */ |