Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _ASM_ARM_MODULE_H |
| 2 | #define _ASM_ARM_MODULE_H |
| 3 | |
David Howells | 786d35d | 2012-09-28 14:31:03 +0930 | [diff] [blame] | 4 | #include <asm-generic/module.h> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 5 | |
Catalin Marinas | 2e1926e | 2009-02-11 13:09:54 +0100 | [diff] [blame] | 6 | struct unwind_table; |
| 7 | |
Catalin Marinas | 2e1926e | 2009-02-11 13:09:54 +0100 | [diff] [blame] | 8 | #ifdef CONFIG_ARM_UNWIND |
Phil Carmody | e5f7772 | 2010-08-19 15:16:37 +0100 | [diff] [blame] | 9 | enum { |
| 10 | ARM_SEC_INIT, |
| 11 | ARM_SEC_DEVINIT, |
| 12 | ARM_SEC_CORE, |
Phil Carmody | 09e56a2 | 2010-08-19 15:19:04 +0100 | [diff] [blame] | 13 | ARM_SEC_EXIT, |
| 14 | ARM_SEC_DEVEXIT, |
Douglas Anderson | 849b882 | 2013-08-29 00:08:01 +0100 | [diff] [blame] | 15 | ARM_SEC_HOT, |
| 16 | ARM_SEC_UNLIKELY, |
Phil Carmody | e5f7772 | 2010-08-19 15:16:37 +0100 | [diff] [blame] | 17 | ARM_SEC_MAX, |
| 18 | }; |
Ard Biesheuvel | 7d485f6 | 2014-11-24 16:54:35 +0100 | [diff] [blame] | 19 | #endif |
Catalin Marinas | 2e1926e | 2009-02-11 13:09:54 +0100 | [diff] [blame] | 20 | |
Russell King | 8931360 | 2010-11-12 13:02:46 +0000 | [diff] [blame] | 21 | struct mod_arch_specific { |
Ard Biesheuvel | 7d485f6 | 2014-11-24 16:54:35 +0100 | [diff] [blame] | 22 | #ifdef CONFIG_ARM_UNWIND |
Russell King | 8931360 | 2010-11-12 13:02:46 +0000 | [diff] [blame] | 23 | struct unwind_table *unwind[ARM_SEC_MAX]; |
David Howells | 786d35d | 2012-09-28 14:31:03 +0930 | [diff] [blame] | 24 | #endif |
Ard Biesheuvel | 7d485f6 | 2014-11-24 16:54:35 +0100 | [diff] [blame] | 25 | #ifdef CONFIG_ARM_MODULE_PLTS |
| 26 | struct elf32_shdr *core_plt; |
| 27 | struct elf32_shdr *init_plt; |
| 28 | int core_plt_count; |
| 29 | int init_plt_count; |
| 30 | #endif |
| 31 | }; |
| 32 | |
| 33 | u32 get_module_plt(struct module *mod, unsigned long loc, Elf32_Addr val); |
Russell King | 8931360 | 2010-11-12 13:02:46 +0000 | [diff] [blame] | 34 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 35 | /* |
Russell King | dc21af9 | 2011-01-04 19:09:43 +0000 | [diff] [blame] | 36 | * Add the ARM architecture version to the version magic string |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 37 | */ |
Russell King | dc21af9 | 2011-01-04 19:09:43 +0000 | [diff] [blame] | 38 | #define MODULE_ARCH_VERMAGIC_ARMVSN "ARMv" __stringify(__LINUX_ARM_ARCH__) " " |
| 39 | |
| 40 | /* Add __virt_to_phys patching state as well */ |
| 41 | #ifdef CONFIG_ARM_PATCH_PHYS_VIRT |
| 42 | #define MODULE_ARCH_VERMAGIC_P2V "p2v8 " |
| 43 | #else |
| 44 | #define MODULE_ARCH_VERMAGIC_P2V "" |
| 45 | #endif |
| 46 | |
Dave Martin | 80f0aad | 2011-02-25 17:54:52 +0100 | [diff] [blame] | 47 | /* Add instruction set architecture tag to distinguish ARM/Thumb kernels */ |
| 48 | #ifdef CONFIG_THUMB2_KERNEL |
| 49 | #define MODULE_ARCH_VERMAGIC_ARMTHUMB "thumb2 " |
| 50 | #else |
| 51 | #define MODULE_ARCH_VERMAGIC_ARMTHUMB "" |
| 52 | #endif |
| 53 | |
Russell King | dc21af9 | 2011-01-04 19:09:43 +0000 | [diff] [blame] | 54 | #define MODULE_ARCH_VERMAGIC \ |
| 55 | MODULE_ARCH_VERMAGIC_ARMVSN \ |
Dave Martin | 80f0aad | 2011-02-25 17:54:52 +0100 | [diff] [blame] | 56 | MODULE_ARCH_VERMAGIC_ARMTHUMB \ |
Russell King | dc21af9 | 2011-01-04 19:09:43 +0000 | [diff] [blame] | 57 | MODULE_ARCH_VERMAGIC_P2V |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 58 | |
| 59 | #endif /* _ASM_ARM_MODULE_H */ |