-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 161636 b: refs/heads/master c: 9a0ef29 h: refs/heads/master v: v3
- Loading branch information
Tejun Heo
committed
Jun 24, 2009
1 parent
9bb97b8
commit e04967b
Showing
3 changed files
with
9 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 9b7dbc7dc0365a943af2d73b1376a6f0aac5dc0d | ||
refs/heads/master: 9a0ef2923abd2cc2c6f78d3663ac7af34c0220e8 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,21 @@ | ||
#ifndef __ARCH_S390_PERCPU__ | ||
#define __ARCH_S390_PERCPU__ | ||
|
||
#include <linux/compiler.h> | ||
#include <asm/lowcore.h> | ||
|
||
/* | ||
* s390 uses its own implementation for per cpu data, the offset of | ||
* the cpu local data area is cached in the cpu's lowcore memory. | ||
* For 64 bit module code s390 forces the use of a GOT slot for the | ||
* address of the per cpu variable. This is needed because the module | ||
* may be more than 4G above the per cpu area. | ||
*/ | ||
#if defined(__s390x__) && defined(MODULE) | ||
|
||
#define SHIFT_PERCPU_PTR(ptr,offset) (({ \ | ||
extern int simple_identifier_##var(void); \ | ||
unsigned long *__ptr; \ | ||
asm ( "larl %0, %1@GOTENT" \ | ||
: "=a" (__ptr) : "X" (ptr) ); \ | ||
(typeof(ptr))((*__ptr) + (offset)); })) | ||
|
||
#else | ||
|
||
#define SHIFT_PERCPU_PTR(ptr, offset) (({ \ | ||
extern int simple_identifier_##var(void); \ | ||
unsigned long __ptr; \ | ||
asm ( "" : "=a" (__ptr) : "0" (ptr) ); \ | ||
(typeof(ptr)) (__ptr + (offset)); })) | ||
#define __my_cpu_offset S390_lowcore.percpu_offset | ||
|
||
/* | ||
* For 64 bit module code, the module may be more than 4G above the | ||
* per cpu area, use weak definitions to force the compiler to | ||
* generate external references. | ||
*/ | ||
#if defined(CONFIG_SMP) && defined(__s390x__) && defined(MODULE) | ||
#define ARCH_NEEDS_WEAK_PER_CPU | ||
#endif | ||
|
||
#define __my_cpu_offset S390_lowcore.percpu_offset | ||
|
||
#include <asm-generic/percpu.h> | ||
|
||
#endif /* __ARCH_S390_PERCPU__ */ |