From c396c4da497bc4cfdee1e98c0a7c6b98dff92ada Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Fri, 28 Sep 2007 20:32:15 +0200 Subject: Add module handling (mostly copied from Linux kernel and stripped down for U-Boot) --- include/module.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 include/module.h (limited to 'include/module.h') diff --git a/include/module.h b/include/module.h new file mode 100644 index 0000000000..faea2ae7e4 --- /dev/null +++ b/include/module.h @@ -0,0 +1,39 @@ +#ifndef __MODULE_H +#define __MODULE_H + +#include +#include + +struct module { + char *name; + + /* Startup function. */ + int (*init)(void); + + /* Here is the actual code + data, free'd on unload. */ + void *module_core; + + /* Arch-specific module values */ + struct mod_arch_specific arch; + + unsigned long core_size; +}; + +/* Apply the given relocation to the (simplified) ELF. Return -error + or 0. */ +int apply_relocate(Elf_Shdr *sechdrs, + const char *strtab, + unsigned int symindex, + unsigned int relsec, + struct module *mod); + +/* Apply the given add relocation to the (simplified) ELF. Return + -error or 0 */ +int apply_relocate_add(Elf_Shdr *sechdrs, + const char *strtab, + unsigned int symindex, + unsigned int relsec, + struct module *mod); + +#endif /* __MODULE_H */ + -- cgit v1.2.3