diff options
Diffstat (limited to 'arch/parisc/kernel/real2.S')
-rw-r--r-- | arch/parisc/kernel/real2.S | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/arch/parisc/kernel/real2.S b/arch/parisc/kernel/real2.S index 789061f6ceb4..7a92695d95a6 100644 --- a/arch/parisc/kernel/real2.S +++ b/arch/parisc/kernel/real2.S | |||
@@ -11,6 +11,8 @@ | |||
11 | #include <asm/psw.h> | 11 | #include <asm/psw.h> |
12 | #include <asm/assembly.h> | 12 | #include <asm/assembly.h> |
13 | 13 | ||
14 | #include <linux/linkage.h> | ||
15 | |||
14 | .section .bss | 16 | .section .bss |
15 | .export real_stack | 17 | .export real_stack |
16 | .export real32_stack | 18 | .export real32_stack |
@@ -39,8 +41,6 @@ save_cr_end: | |||
39 | 41 | ||
40 | .text | 42 | .text |
41 | 43 | ||
42 | .export real32_call_asm | ||
43 | |||
44 | /* unsigned long real32_call_asm(unsigned int *sp, | 44 | /* unsigned long real32_call_asm(unsigned int *sp, |
45 | * unsigned int *arg0p, | 45 | * unsigned int *arg0p, |
46 | * unsigned int iodc_fn) | 46 | * unsigned int iodc_fn) |
@@ -49,7 +49,7 @@ save_cr_end: | |||
49 | * iodc_fn is the IODC function to call | 49 | * iodc_fn is the IODC function to call |
50 | */ | 50 | */ |
51 | 51 | ||
52 | real32_call_asm: | 52 | ENTRY(real32_call_asm) |
53 | STREG %rp, -RP_OFFSET(%sp) /* save RP */ | 53 | STREG %rp, -RP_OFFSET(%sp) /* save RP */ |
54 | #ifdef CONFIG_64BIT | 54 | #ifdef CONFIG_64BIT |
55 | callee_save | 55 | callee_save |
@@ -107,6 +107,7 @@ ric_ret: | |||
107 | LDREG -RP_OFFSET(%sp), %rp /* restore RP */ | 107 | LDREG -RP_OFFSET(%sp), %rp /* restore RP */ |
108 | bv 0(%rp) | 108 | bv 0(%rp) |
109 | nop | 109 | nop |
110 | ENDPROC(real32_call_asm) | ||
110 | 111 | ||
111 | 112 | ||
112 | # define PUSH_CR(r, where) mfctl r, %r1 ! STREG,ma %r1, REG_SZ(where) | 113 | # define PUSH_CR(r, where) mfctl r, %r1 ! STREG,ma %r1, REG_SZ(where) |
@@ -218,7 +219,6 @@ rfi_r2v_1: | |||
218 | /************************ 64-bit real-mode calls ***********************/ | 219 | /************************ 64-bit real-mode calls ***********************/ |
219 | /* This is only usable in wide kernels right now and will probably stay so */ | 220 | /* This is only usable in wide kernels right now and will probably stay so */ |
220 | .text | 221 | .text |
221 | .export real64_call_asm | ||
222 | /* unsigned long real64_call_asm(unsigned long *sp, | 222 | /* unsigned long real64_call_asm(unsigned long *sp, |
223 | * unsigned long *arg0p, | 223 | * unsigned long *arg0p, |
224 | * unsigned long fn) | 224 | * unsigned long fn) |
@@ -226,7 +226,7 @@ rfi_r2v_1: | |||
226 | * arg0p points to where saved arg values may be found | 226 | * arg0p points to where saved arg values may be found |
227 | * iodc_fn is the IODC function to call | 227 | * iodc_fn is the IODC function to call |
228 | */ | 228 | */ |
229 | real64_call_asm: | 229 | ENTRY(real64_call_asm) |
230 | std %rp, -0x10(%sp) /* save RP */ | 230 | std %rp, -0x10(%sp) /* save RP */ |
231 | std %sp, -8(%arg0) /* save SP on real-mode stack */ | 231 | std %sp, -8(%arg0) /* save SP on real-mode stack */ |
232 | copy %arg0, %sp /* adopt the real-mode SP */ | 232 | copy %arg0, %sp /* adopt the real-mode SP */ |
@@ -272,19 +272,21 @@ r64_ret: | |||
272 | ldd -0x10(%sp), %rp /* restore RP */ | 272 | ldd -0x10(%sp), %rp /* restore RP */ |
273 | bv 0(%rp) | 273 | bv 0(%rp) |
274 | nop | 274 | nop |
275 | ENDPROC(real64_call_asm) | ||
275 | 276 | ||
276 | #endif | 277 | #endif |
277 | 278 | ||
278 | .export __canonicalize_funcptr_for_compare | ||
279 | .text | 279 | .text |
280 | /* http://lists.parisc-linux.org/hypermail/parisc-linux/10916.html | 280 | /* http://lists.parisc-linux.org/hypermail/parisc-linux/10916.html |
281 | ** GCC 3.3 and later has a new function in libgcc.a for | 281 | ** GCC 3.3 and later has a new function in libgcc.a for |
282 | ** comparing function pointers. | 282 | ** comparing function pointers. |
283 | */ | 283 | */ |
284 | __canonicalize_funcptr_for_compare: | 284 | ENTRY(__canonicalize_funcptr_for_compare) |
285 | #ifdef CONFIG_64BIT | 285 | #ifdef CONFIG_64BIT |
286 | bve (%r2) | 286 | bve (%r2) |
287 | #else | 287 | #else |
288 | bv %r0(%r2) | 288 | bv %r0(%r2) |
289 | #endif | 289 | #endif |
290 | copy %r26,%r28 | 290 | copy %r26,%r28 |
291 | ENDPROC(__canonicalize_funcptr_for_compare) | ||
292 | |||