diff options
Diffstat (limited to 'include/asm-parisc/assembly.h')
-rw-r--r-- | include/asm-parisc/assembly.h | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/include/asm-parisc/assembly.h b/include/asm-parisc/assembly.h index 5a1e0e8b1c32..5587f0023881 100644 --- a/include/asm-parisc/assembly.h +++ b/include/asm-parisc/assembly.h | |||
@@ -31,9 +31,13 @@ | |||
31 | #define STREGM std,ma | 31 | #define STREGM std,ma |
32 | #define SHRREG shrd | 32 | #define SHRREG shrd |
33 | #define SHLREG shld | 33 | #define SHLREG shld |
34 | #define ADDIB addib,* | ||
35 | #define CMPB cmpb,* | ||
36 | #define ANDCM andcm,* | ||
34 | #define RP_OFFSET 16 | 37 | #define RP_OFFSET 16 |
35 | #define FRAME_SIZE 128 | 38 | #define FRAME_SIZE 128 |
36 | #define CALLEE_REG_FRAME_SIZE 144 | 39 | #define CALLEE_REG_FRAME_SIZE 144 |
40 | #define ASM_ULONG_INSN .dword | ||
37 | #else /* CONFIG_64BIT */ | 41 | #else /* CONFIG_64BIT */ |
38 | #define LDREG ldw | 42 | #define LDREG ldw |
39 | #define STREG stw | 43 | #define STREG stw |
@@ -42,9 +46,13 @@ | |||
42 | #define STREGM stwm | 46 | #define STREGM stwm |
43 | #define SHRREG shr | 47 | #define SHRREG shr |
44 | #define SHLREG shlw | 48 | #define SHLREG shlw |
49 | #define ADDIB addib, | ||
50 | #define CMPB cmpb, | ||
51 | #define ANDCM andcm | ||
45 | #define RP_OFFSET 20 | 52 | #define RP_OFFSET 20 |
46 | #define FRAME_SIZE 64 | 53 | #define FRAME_SIZE 64 |
47 | #define CALLEE_REG_FRAME_SIZE 128 | 54 | #define CALLEE_REG_FRAME_SIZE 128 |
55 | #define ASM_ULONG_INSN .word | ||
48 | #endif | 56 | #endif |
49 | 57 | ||
50 | #define CALLEE_SAVE_FRAME_SIZE (CALLEE_REG_FRAME_SIZE + CALLEE_FLOAT_FRAME_SIZE) | 58 | #define CALLEE_SAVE_FRAME_SIZE (CALLEE_REG_FRAME_SIZE + CALLEE_FLOAT_FRAME_SIZE) |
@@ -65,7 +73,7 @@ | |||
65 | 73 | ||
66 | #ifdef __ASSEMBLY__ | 74 | #ifdef __ASSEMBLY__ |
67 | 75 | ||
68 | #ifdef __LP64__ | 76 | #ifdef CONFIG_64BIT |
69 | /* the 64-bit pa gnu assembler unfortunately defaults to .level 1.1 or 2.0 so | 77 | /* the 64-bit pa gnu assembler unfortunately defaults to .level 1.1 or 2.0 so |
70 | * work around that for now... */ | 78 | * work around that for now... */ |
71 | .level 2.0w | 79 | .level 2.0w |
@@ -156,7 +164,7 @@ | |||
156 | .endm | 164 | .endm |
157 | 165 | ||
158 | .macro loadgp | 166 | .macro loadgp |
159 | #ifdef __LP64__ | 167 | #ifdef CONFIG_64BIT |
160 | ldil L%__gp, %r27 | 168 | ldil L%__gp, %r27 |
161 | ldo R%__gp(%r27), %r27 | 169 | ldo R%__gp(%r27), %r27 |
162 | #else | 170 | #else |
@@ -334,7 +342,7 @@ | |||
334 | fldd,mb -8(%r30), %fr12 | 342 | fldd,mb -8(%r30), %fr12 |
335 | .endm | 343 | .endm |
336 | 344 | ||
337 | #ifdef __LP64__ | 345 | #ifdef CONFIG_64BIT |
338 | .macro callee_save | 346 | .macro callee_save |
339 | std,ma %r3, CALLEE_REG_FRAME_SIZE(%r30) | 347 | std,ma %r3, CALLEE_REG_FRAME_SIZE(%r30) |
340 | mfctl %cr27, %r3 | 348 | mfctl %cr27, %r3 |
@@ -377,7 +385,7 @@ | |||
377 | ldd,mb -CALLEE_REG_FRAME_SIZE(%r30), %r3 | 385 | ldd,mb -CALLEE_REG_FRAME_SIZE(%r30), %r3 |
378 | .endm | 386 | .endm |
379 | 387 | ||
380 | #else /* ! __LP64__ */ | 388 | #else /* ! CONFIG_64BIT */ |
381 | 389 | ||
382 | .macro callee_save | 390 | .macro callee_save |
383 | stw,ma %r3, CALLEE_REG_FRAME_SIZE(%r30) | 391 | stw,ma %r3, CALLEE_REG_FRAME_SIZE(%r30) |
@@ -420,7 +428,7 @@ | |||
420 | mtctl %r3, %cr27 | 428 | mtctl %r3, %cr27 |
421 | ldw,mb -CALLEE_REG_FRAME_SIZE(%r30), %r3 | 429 | ldw,mb -CALLEE_REG_FRAME_SIZE(%r30), %r3 |
422 | .endm | 430 | .endm |
423 | #endif /* ! __LP64__ */ | 431 | #endif /* ! CONFIG_64BIT */ |
424 | 432 | ||
425 | .macro save_specials regs | 433 | .macro save_specials regs |
426 | 434 | ||
@@ -441,7 +449,7 @@ | |||
441 | mtctl %r0, %cr18 | 449 | mtctl %r0, %cr18 |
442 | SAVE_CR (%cr18, PT_IAOQ1(\regs)) | 450 | SAVE_CR (%cr18, PT_IAOQ1(\regs)) |
443 | 451 | ||
444 | #ifdef __LP64__ | 452 | #ifdef CONFIG_64BIT |
445 | /* cr11 (sar) is a funny one. 5 bits on PA1.1 and 6 bit on PA2.0 | 453 | /* cr11 (sar) is a funny one. 5 bits on PA1.1 and 6 bit on PA2.0 |
446 | * For PA2.0 mtsar or mtctl always write 6 bits, but mfctl only | 454 | * For PA2.0 mtsar or mtctl always write 6 bits, but mfctl only |
447 | * reads 5 bits. Use mfctl,w to read all six bits. Otherwise | 455 | * reads 5 bits. Use mfctl,w to read all six bits. Otherwise |