Linux Audio

Check our new training course

Linux debugging, profiling, tracing and performance analysis training

Mar 24-27, 2025, special US time zones
Register
Loading...
v4.17
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#ifndef _ASM_MODULE_H
  3#define _ASM_MODULE_H
  4
  5#include <linux/list.h>
  6#include <linux/elf.h>
  7#include <asm/extable.h>
  8
  9struct mod_arch_specific {
 10	/* Data Bus Error exception tables */
 11	struct list_head dbe_list;
 12	const struct exception_table_entry *dbe_start;
 13	const struct exception_table_entry *dbe_end;
 14	struct mips_hi16 *r_mips_hi16_list;
 15};
 16
 17typedef uint8_t Elf64_Byte;		/* Type for a 8-bit quantity.  */
 18
 19typedef struct {
 20	Elf64_Addr r_offset;			/* Address of relocation.  */
 21	Elf64_Word r_sym;			/* Symbol index.  */
 22	Elf64_Byte r_ssym;			/* Special symbol.  */
 23	Elf64_Byte r_type3;			/* Third relocation.  */
 24	Elf64_Byte r_type2;			/* Second relocation.  */
 25	Elf64_Byte r_type;			/* First relocation.  */
 26} Elf64_Mips_Rel;
 27
 28typedef struct {
 29	Elf64_Addr r_offset;			/* Address of relocation.  */
 30	Elf64_Word r_sym;			/* Symbol index.  */
 31	Elf64_Byte r_ssym;			/* Special symbol.  */
 32	Elf64_Byte r_type3;			/* Third relocation.  */
 33	Elf64_Byte r_type2;			/* Second relocation.  */
 34	Elf64_Byte r_type;			/* First relocation.  */
 35	Elf64_Sxword r_addend;			/* Addend.  */
 36} Elf64_Mips_Rela;
 37
 38#ifdef CONFIG_32BIT
 39#define Elf_Shdr	Elf32_Shdr
 40#define Elf_Sym		Elf32_Sym
 41#define Elf_Ehdr	Elf32_Ehdr
 42#define Elf_Addr	Elf32_Addr
 43#define Elf_Rel		Elf32_Rel
 44#define Elf_Rela	Elf32_Rela
 45#define ELF_R_TYPE(X)	ELF32_R_TYPE(X)
 46#define ELF_R_SYM(X)	ELF32_R_SYM(X)
 47
 48#define Elf_Mips_Rel	Elf32_Rel
 49#define Elf_Mips_Rela	Elf32_Rela
 50
 51#define ELF_MIPS_R_SYM(rel) ELF32_R_SYM((rel).r_info)
 52#define ELF_MIPS_R_TYPE(rel) ELF32_R_TYPE((rel).r_info)
 53
 54#endif
 55
 56#ifdef CONFIG_64BIT
 57#define Elf_Shdr	Elf64_Shdr
 58#define Elf_Sym		Elf64_Sym
 59#define Elf_Ehdr	Elf64_Ehdr
 60#define Elf_Addr	Elf64_Addr
 61#define Elf_Rel		Elf64_Rel
 62#define Elf_Rela	Elf64_Rela
 63#define ELF_R_TYPE(X)	ELF64_R_TYPE(X)
 64#define ELF_R_SYM(X)	ELF64_R_SYM(X)
 65
 66#define Elf_Mips_Rel	Elf64_Mips_Rel
 67#define Elf_Mips_Rela	Elf64_Mips_Rela
 68
 69#define ELF_MIPS_R_SYM(rel) ((rel).r_sym)
 70#define ELF_MIPS_R_TYPE(rel) ((rel).r_type)
 71
 72#endif
 73
 74#ifdef CONFIG_MODULES
 75/* Given an address, look for it in the exception tables. */
 76const struct exception_table_entry*search_module_dbetables(unsigned long addr);
 77#else
 78/* Given an address, look for it in the exception tables. */
 79static inline const struct exception_table_entry *
 80search_module_dbetables(unsigned long addr)
 81{
 82	return NULL;
 83}
 84#endif
 85
 86#ifdef CONFIG_CPU_BMIPS
 87#define MODULE_PROC_FAMILY "BMIPS "
 88#elif defined CONFIG_CPU_MIPS32_R1
 89#define MODULE_PROC_FAMILY "MIPS32_R1 "
 90#elif defined CONFIG_CPU_MIPS32_R2
 91#define MODULE_PROC_FAMILY "MIPS32_R2 "
 92#elif defined CONFIG_CPU_MIPS32_R6
 93#define MODULE_PROC_FAMILY "MIPS32_R6 "
 94#elif defined CONFIG_CPU_MIPS64_R1
 95#define MODULE_PROC_FAMILY "MIPS64_R1 "
 96#elif defined CONFIG_CPU_MIPS64_R2
 97#define MODULE_PROC_FAMILY "MIPS64_R2 "
 98#elif defined CONFIG_CPU_MIPS64_R6
 99#define MODULE_PROC_FAMILY "MIPS64_R6 "
100#elif defined CONFIG_CPU_R3000
101#define MODULE_PROC_FAMILY "R3000 "
102#elif defined CONFIG_CPU_TX39XX
103#define MODULE_PROC_FAMILY "TX39XX "
104#elif defined CONFIG_CPU_VR41XX
105#define MODULE_PROC_FAMILY "VR41XX "
106#elif defined CONFIG_CPU_R4300
107#define MODULE_PROC_FAMILY "R4300 "
108#elif defined CONFIG_CPU_R4X00
109#define MODULE_PROC_FAMILY "R4X00 "
110#elif defined CONFIG_CPU_TX49XX
111#define MODULE_PROC_FAMILY "TX49XX "
112#elif defined CONFIG_CPU_R5000
113#define MODULE_PROC_FAMILY "R5000 "
114#elif defined CONFIG_CPU_R5432
115#define MODULE_PROC_FAMILY "R5432 "
116#elif defined CONFIG_CPU_R5500
117#define MODULE_PROC_FAMILY "R5500 "
 
 
118#elif defined CONFIG_CPU_NEVADA
119#define MODULE_PROC_FAMILY "NEVADA "
120#elif defined CONFIG_CPU_R8000
121#define MODULE_PROC_FAMILY "R8000 "
122#elif defined CONFIG_CPU_R10000
123#define MODULE_PROC_FAMILY "R10000 "
124#elif defined CONFIG_CPU_RM7000
125#define MODULE_PROC_FAMILY "RM7000 "
126#elif defined CONFIG_CPU_SB1
127#define MODULE_PROC_FAMILY "SB1 "
128#elif defined CONFIG_CPU_LOONGSON1
129#define MODULE_PROC_FAMILY "LOONGSON1 "
130#elif defined CONFIG_CPU_LOONGSON2
131#define MODULE_PROC_FAMILY "LOONGSON2 "
132#elif defined CONFIG_CPU_LOONGSON3
133#define MODULE_PROC_FAMILY "LOONGSON3 "
134#elif defined CONFIG_CPU_CAVIUM_OCTEON
135#define MODULE_PROC_FAMILY "OCTEON "
136#elif defined CONFIG_CPU_XLR
137#define MODULE_PROC_FAMILY "XLR "
138#elif defined CONFIG_CPU_XLP
139#define MODULE_PROC_FAMILY "XLP "
140#else
141#error MODULE_PROC_FAMILY undefined for your processor configuration
142#endif
143
144#ifdef CONFIG_32BIT
145#define MODULE_KERNEL_TYPE "32BIT "
146#elif defined CONFIG_64BIT
147#define MODULE_KERNEL_TYPE "64BIT "
148#endif
149
 
 
 
 
 
 
150#define MODULE_ARCH_VERMAGIC \
151	MODULE_PROC_FAMILY MODULE_KERNEL_TYPE
152
153#endif /* _ASM_MODULE_H */
v3.15
 
  1#ifndef _ASM_MODULE_H
  2#define _ASM_MODULE_H
  3
  4#include <linux/list.h>
  5#include <linux/elf.h>
  6#include <asm/uaccess.h>
  7
  8struct mod_arch_specific {
  9	/* Data Bus Error exception tables */
 10	struct list_head dbe_list;
 11	const struct exception_table_entry *dbe_start;
 12	const struct exception_table_entry *dbe_end;
 13	struct mips_hi16 *r_mips_hi16_list;
 14};
 15
 16typedef uint8_t Elf64_Byte;		/* Type for a 8-bit quantity.  */
 17
 18typedef struct {
 19	Elf64_Addr r_offset;			/* Address of relocation.  */
 20	Elf64_Word r_sym;			/* Symbol index.  */
 21	Elf64_Byte r_ssym;			/* Special symbol.  */
 22	Elf64_Byte r_type3;			/* Third relocation.  */
 23	Elf64_Byte r_type2;			/* Second relocation.  */
 24	Elf64_Byte r_type;			/* First relocation.  */
 25} Elf64_Mips_Rel;
 26
 27typedef struct {
 28	Elf64_Addr r_offset;			/* Address of relocation.  */
 29	Elf64_Word r_sym;			/* Symbol index.  */
 30	Elf64_Byte r_ssym;			/* Special symbol.  */
 31	Elf64_Byte r_type3;			/* Third relocation.  */
 32	Elf64_Byte r_type2;			/* Second relocation.  */
 33	Elf64_Byte r_type;			/* First relocation.  */
 34	Elf64_Sxword r_addend;			/* Addend.  */
 35} Elf64_Mips_Rela;
 36
 37#ifdef CONFIG_32BIT
 38#define Elf_Shdr	Elf32_Shdr
 39#define Elf_Sym		Elf32_Sym
 40#define Elf_Ehdr	Elf32_Ehdr
 41#define Elf_Addr	Elf32_Addr
 42#define Elf_Rel		Elf32_Rel
 43#define Elf_Rela	Elf32_Rela
 44#define ELF_R_TYPE(X)	ELF32_R_TYPE(X)
 45#define ELF_R_SYM(X)	ELF32_R_SYM(X)
 46
 47#define Elf_Mips_Rel	Elf32_Rel
 48#define Elf_Mips_Rela	Elf32_Rela
 49
 50#define ELF_MIPS_R_SYM(rel) ELF32_R_SYM(rel.r_info)
 51#define ELF_MIPS_R_TYPE(rel) ELF32_R_TYPE(rel.r_info)
 52
 53#endif
 54
 55#ifdef CONFIG_64BIT
 56#define Elf_Shdr	Elf64_Shdr
 57#define Elf_Sym		Elf64_Sym
 58#define Elf_Ehdr	Elf64_Ehdr
 59#define Elf_Addr	Elf64_Addr
 60#define Elf_Rel		Elf64_Rel
 61#define Elf_Rela	Elf64_Rela
 62#define ELF_R_TYPE(X)	ELF64_R_TYPE(X)
 63#define ELF_R_SYM(X)	ELF64_R_SYM(X)
 64
 65#define Elf_Mips_Rel	Elf64_Mips_Rel
 66#define Elf_Mips_Rela	Elf64_Mips_Rela
 67
 68#define ELF_MIPS_R_SYM(rel) (rel.r_sym)
 69#define ELF_MIPS_R_TYPE(rel) (rel.r_type)
 70
 71#endif
 72
 73#ifdef CONFIG_MODULES
 74/* Given an address, look for it in the exception tables. */
 75const struct exception_table_entry*search_module_dbetables(unsigned long addr);
 76#else
 77/* Given an address, look for it in the exception tables. */
 78static inline const struct exception_table_entry *
 79search_module_dbetables(unsigned long addr)
 80{
 81	return NULL;
 82}
 83#endif
 84
 85#ifdef CONFIG_CPU_BMIPS
 86#define MODULE_PROC_FAMILY "BMIPS "
 87#elif defined CONFIG_CPU_MIPS32_R1
 88#define MODULE_PROC_FAMILY "MIPS32_R1 "
 89#elif defined CONFIG_CPU_MIPS32_R2
 90#define MODULE_PROC_FAMILY "MIPS32_R2 "
 
 
 91#elif defined CONFIG_CPU_MIPS64_R1
 92#define MODULE_PROC_FAMILY "MIPS64_R1 "
 93#elif defined CONFIG_CPU_MIPS64_R2
 94#define MODULE_PROC_FAMILY "MIPS64_R2 "
 
 
 95#elif defined CONFIG_CPU_R3000
 96#define MODULE_PROC_FAMILY "R3000 "
 97#elif defined CONFIG_CPU_TX39XX
 98#define MODULE_PROC_FAMILY "TX39XX "
 99#elif defined CONFIG_CPU_VR41XX
100#define MODULE_PROC_FAMILY "VR41XX "
101#elif defined CONFIG_CPU_R4300
102#define MODULE_PROC_FAMILY "R4300 "
103#elif defined CONFIG_CPU_R4X00
104#define MODULE_PROC_FAMILY "R4X00 "
105#elif defined CONFIG_CPU_TX49XX
106#define MODULE_PROC_FAMILY "TX49XX "
107#elif defined CONFIG_CPU_R5000
108#define MODULE_PROC_FAMILY "R5000 "
109#elif defined CONFIG_CPU_R5432
110#define MODULE_PROC_FAMILY "R5432 "
111#elif defined CONFIG_CPU_R5500
112#define MODULE_PROC_FAMILY "R5500 "
113#elif defined CONFIG_CPU_R6000
114#define MODULE_PROC_FAMILY "R6000 "
115#elif defined CONFIG_CPU_NEVADA
116#define MODULE_PROC_FAMILY "NEVADA "
117#elif defined CONFIG_CPU_R8000
118#define MODULE_PROC_FAMILY "R8000 "
119#elif defined CONFIG_CPU_R10000
120#define MODULE_PROC_FAMILY "R10000 "
121#elif defined CONFIG_CPU_RM7000
122#define MODULE_PROC_FAMILY "RM7000 "
123#elif defined CONFIG_CPU_SB1
124#define MODULE_PROC_FAMILY "SB1 "
125#elif defined CONFIG_CPU_LOONGSON1
126#define MODULE_PROC_FAMILY "LOONGSON1 "
127#elif defined CONFIG_CPU_LOONGSON2
128#define MODULE_PROC_FAMILY "LOONGSON2 "
129#elif defined CONFIG_CPU_LOONGSON3
130#define MODULE_PROC_FAMILY "LOONGSON3 "
131#elif defined CONFIG_CPU_CAVIUM_OCTEON
132#define MODULE_PROC_FAMILY "OCTEON "
133#elif defined CONFIG_CPU_XLR
134#define MODULE_PROC_FAMILY "XLR "
135#elif defined CONFIG_CPU_XLP
136#define MODULE_PROC_FAMILY "XLP "
137#else
138#error MODULE_PROC_FAMILY undefined for your processor configuration
139#endif
140
141#ifdef CONFIG_32BIT
142#define MODULE_KERNEL_TYPE "32BIT "
143#elif defined CONFIG_64BIT
144#define MODULE_KERNEL_TYPE "64BIT "
145#endif
146
147#ifdef CONFIG_MIPS_MT_SMTC
148#define MODULE_KERNEL_SMTC "MT_SMTC "
149#else
150#define MODULE_KERNEL_SMTC ""
151#endif
152
153#define MODULE_ARCH_VERMAGIC \
154	MODULE_PROC_FAMILY MODULE_KERNEL_TYPE MODULE_KERNEL_SMTC
155
156#endif /* _ASM_MODULE_H */