module.c (1da177e4c3f41524e886b7f1b8a0c1fc7321cac2) | module.c (347a8dc3b815f0c0fa62a1df075184ffe4cbdcf1) |
---|---|
1/* 2 * arch/s390/kernel/module.c - Kernel module help for s390. 3 * 4 * S390 version 5 * Copyright (C) 2002, 2003 IBM Deutschland Entwicklung GmbH, 6 * IBM Corporation 7 * Author(s): Arnd Bergmann (arndb@de.ibm.com) 8 * Martin Schwidefsky (schwidefsky@de.ibm.com) --- 23 unchanged lines hidden (view full) --- 32#include <linux/kernel.h> 33 34#if 0 35#define DEBUGP printk 36#else 37#define DEBUGP(fmt , ...) 38#endif 39 | 1/* 2 * arch/s390/kernel/module.c - Kernel module help for s390. 3 * 4 * S390 version 5 * Copyright (C) 2002, 2003 IBM Deutschland Entwicklung GmbH, 6 * IBM Corporation 7 * Author(s): Arnd Bergmann (arndb@de.ibm.com) 8 * Martin Schwidefsky (schwidefsky@de.ibm.com) --- 23 unchanged lines hidden (view full) --- 32#include <linux/kernel.h> 33 34#if 0 35#define DEBUGP printk 36#else 37#define DEBUGP(fmt , ...) 38#endif 39 |
40#ifndef CONFIG_ARCH_S390X | 40#ifndef CONFIG_64BIT |
41#define PLT_ENTRY_SIZE 12 | 41#define PLT_ENTRY_SIZE 12 |
42#else /* CONFIG_ARCH_S390X */ | 42#else /* CONFIG_64BIT */ |
43#define PLT_ENTRY_SIZE 20 | 43#define PLT_ENTRY_SIZE 20 |
44#endif /* CONFIG_ARCH_S390X */ | 44#endif /* CONFIG_64BIT */ |
45 46void *module_alloc(unsigned long size) 47{ 48 if (size == 0) 49 return NULL; 50 return vmalloc(size); 51} 52 --- 236 unchanged lines hidden (view full) --- 289 case R_390_PLT64: /* 64 bit PC relative PLT address. */ 290 case R_390_PLTOFF16: /* 16 bit offset from GOT to PLT. */ 291 case R_390_PLTOFF32: /* 32 bit offset from GOT to PLT. */ 292 case R_390_PLTOFF64: /* 16 bit offset from GOT to PLT. */ 293 if (info->plt_initialized == 0) { 294 unsigned int *ip; 295 ip = me->module_core + me->arch.plt_offset + 296 info->plt_offset; | 45 46void *module_alloc(unsigned long size) 47{ 48 if (size == 0) 49 return NULL; 50 return vmalloc(size); 51} 52 --- 236 unchanged lines hidden (view full) --- 289 case R_390_PLT64: /* 64 bit PC relative PLT address. */ 290 case R_390_PLTOFF16: /* 16 bit offset from GOT to PLT. */ 291 case R_390_PLTOFF32: /* 32 bit offset from GOT to PLT. */ 292 case R_390_PLTOFF64: /* 16 bit offset from GOT to PLT. */ 293 if (info->plt_initialized == 0) { 294 unsigned int *ip; 295 ip = me->module_core + me->arch.plt_offset + 296 info->plt_offset; |
297#ifndef CONFIG_ARCH_S390X | 297#ifndef CONFIG_64BIT |
298 ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */ 299 ip[1] = 0x100607f1; 300 ip[2] = val; | 298 ip[0] = 0x0d105810; /* basr 1,0; l 1,6(1); br 1 */ 299 ip[1] = 0x100607f1; 300 ip[2] = val; |
301#else /* CONFIG_ARCH_S390X */ | 301#else /* CONFIG_64BIT */ |
302 ip[0] = 0x0d10e310; /* basr 1,0; lg 1,10(1); br 1 */ 303 ip[1] = 0x100a0004; 304 ip[2] = 0x07f10000; 305 ip[3] = (unsigned int) (val >> 32); 306 ip[4] = (unsigned int) val; | 302 ip[0] = 0x0d10e310; /* basr 1,0; lg 1,10(1); br 1 */ 303 ip[1] = 0x100a0004; 304 ip[2] = 0x07f10000; 305 ip[3] = (unsigned int) (val >> 32); 306 ip[4] = (unsigned int) val; |
307#endif /* CONFIG_ARCH_S390X */ | 307#endif /* CONFIG_64BIT */ |
308 info->plt_initialized = 1; 309 } 310 if (r_type == R_390_PLTOFF16 || 311 r_type == R_390_PLTOFF32 312 || r_type == R_390_PLTOFF64 313 ) 314 val = me->arch.plt_offset - me->arch.got_offset + 315 info->plt_offset + rela->r_addend; --- 90 unchanged lines hidden --- | 308 info->plt_initialized = 1; 309 } 310 if (r_type == R_390_PLTOFF16 || 311 r_type == R_390_PLTOFF32 312 || r_type == R_390_PLTOFF64 313 ) 314 val = me->arch.plt_offset - me->arch.got_offset + 315 info->plt_offset + rela->r_addend; --- 90 unchanged lines hidden --- |