diff options
Diffstat (limited to 'include/asm-powerpc/asm-compat.h')
| -rw-r--r-- | include/asm-powerpc/asm-compat.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/include/asm-powerpc/asm-compat.h b/include/asm-powerpc/asm-compat.h index 8e64be0cc47d..c89bd58ee283 100644 --- a/include/asm-powerpc/asm-compat.h +++ b/include/asm-powerpc/asm-compat.h | |||
| @@ -14,6 +14,58 @@ | |||
| 14 | # define ASM_CONST(x) __ASM_CONST(x) | 14 | # define ASM_CONST(x) __ASM_CONST(x) |
| 15 | #endif | 15 | #endif |
| 16 | 16 | ||
| 17 | |||
| 18 | /* | ||
| 19 | * Feature section common macros | ||
| 20 | * | ||
| 21 | * Note that the entries now contain offsets between the table entry | ||
| 22 | * and the code rather than absolute code pointers in order to be | ||
| 23 | * useable with the vdso shared library. There is also an assumption | ||
| 24 | * that values will be negative, that is, the fixup table has to be | ||
| 25 | * located after the code it fixes up. | ||
| 26 | */ | ||
| 27 | #ifdef CONFIG_PPC64 | ||
| 28 | #ifdef __powerpc64__ | ||
| 29 | /* 64 bits kernel, 64 bits code */ | ||
| 30 | #define MAKE_FTR_SECTION_ENTRY(msk, val, label, sect) \ | ||
| 31 | 99: \ | ||
| 32 | .section sect,"a"; \ | ||
| 33 | .align 3; \ | ||
| 34 | 98: \ | ||
| 35 | .llong msk; \ | ||
| 36 | .llong val; \ | ||
| 37 | .llong label##b-98b; \ | ||
| 38 | .llong 99b-98b; \ | ||
| 39 | .previous | ||
| 40 | #else /* __powerpc64__ */ | ||
| 41 | /* 64 bits kernel, 32 bits code (ie. vdso32) */ | ||
| 42 | #define MAKE_FTR_SECTION_ENTRY(msk, val, label, sect) \ | ||
| 43 | 99: \ | ||
| 44 | .section sect,"a"; \ | ||
| 45 | .align 3; \ | ||
| 46 | 98: \ | ||
| 47 | .llong msk; \ | ||
| 48 | .llong val; \ | ||
| 49 | .long 0xffffffff; \ | ||
| 50 | .long label##b-98b; \ | ||
| 51 | .long 0xffffffff; \ | ||
| 52 | .long 99b-98b; \ | ||
| 53 | .previous | ||
| 54 | #endif /* !__powerpc64__ */ | ||
| 55 | #else /* CONFIG_PPC64 */ | ||
| 56 | /* 32 bits kernel, 32 bits code */ | ||
| 57 | #define MAKE_FTR_SECTION_ENTRY(msk, val, label, sect) \ | ||
| 58 | 99: \ | ||
| 59 | .section sect,"a"; \ | ||
| 60 | .align 2; \ | ||
| 61 | 98: \ | ||
| 62 | .long msk; \ | ||
| 63 | .long val; \ | ||
| 64 | .long label##b-98b; \ | ||
| 65 | .long 99b-98b; \ | ||
| 66 | .previous | ||
| 67 | #endif /* !CONFIG_PPC64 */ | ||
| 68 | |||
| 17 | #ifdef __powerpc64__ | 69 | #ifdef __powerpc64__ |
| 18 | 70 | ||
| 19 | /* operations for longs and pointers */ | 71 | /* operations for longs and pointers */ |
