提交 f85cca6b 编写于 作者: L Linus Torvalds

Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
  [S390] net: provide architecture specific NET_SKB_PAD
  [S390] atomic: use inline asm
  [S390] correct ipl parameter block safe guard
  [S390] atomic: use ACCESS_ONCE() for atomic_read()
  [S390] dasd: correct device table
...@@ -133,11 +133,12 @@ unsigned long decompress_kernel(void) ...@@ -133,11 +133,12 @@ unsigned long decompress_kernel(void)
unsigned long output_addr; unsigned long output_addr;
unsigned char *output; unsigned char *output;
check_ipl_parmblock((void *) 0, (unsigned long) output + SZ__bss_start); output_addr = ((unsigned long) &_end + HEAP_SIZE + 4095UL) & -4096UL;
check_ipl_parmblock((void *) 0, output_addr + SZ__bss_start);
memset(&_bss, 0, &_ebss - &_bss); memset(&_bss, 0, &_ebss - &_bss);
free_mem_ptr = (unsigned long)&_end; free_mem_ptr = (unsigned long)&_end;
free_mem_end_ptr = free_mem_ptr + HEAP_SIZE; free_mem_end_ptr = free_mem_ptr + HEAP_SIZE;
output = (unsigned char *) ((free_mem_end_ptr + 4095UL) & -4096UL); output = (unsigned char *) output_addr;
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
/* /*
......
...@@ -36,14 +36,19 @@ ...@@ -36,14 +36,19 @@
static inline int atomic_read(const atomic_t *v) static inline int atomic_read(const atomic_t *v)
{ {
barrier(); int c;
return v->counter;
asm volatile(
" l %0,%1\n"
: "=d" (c) : "Q" (v->counter));
return c;
} }
static inline void atomic_set(atomic_t *v, int i) static inline void atomic_set(atomic_t *v, int i)
{ {
v->counter = i; asm volatile(
barrier(); " st %1,%0\n"
: "=Q" (v->counter) : "d" (i));
} }
static inline int atomic_add_return(int i, atomic_t *v) static inline int atomic_add_return(int i, atomic_t *v)
...@@ -128,14 +133,19 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) ...@@ -128,14 +133,19 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
static inline long long atomic64_read(const atomic64_t *v) static inline long long atomic64_read(const atomic64_t *v)
{ {
barrier(); long long c;
return v->counter;
asm volatile(
" lg %0,%1\n"
: "=d" (c) : "Q" (v->counter));
return c;
} }
static inline void atomic64_set(atomic64_t *v, long long i) static inline void atomic64_set(atomic64_t *v, long long i)
{ {
v->counter = i; asm volatile(
barrier(); " stg %1,%0\n"
: "=Q" (v->counter) : "d" (i));
} }
static inline long long atomic64_add_return(long long i, atomic64_t *v) static inline long long atomic64_add_return(long long i, atomic64_t *v)
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#define L1_CACHE_BYTES 256 #define L1_CACHE_BYTES 256
#define L1_CACHE_SHIFT 8 #define L1_CACHE_SHIFT 8
#define NET_SKB_PAD 32
#define __read_mostly __attribute__((__section__(".data..read_mostly"))) #define __read_mostly __attribute__((__section__(".data..read_mostly")))
......
...@@ -72,7 +72,7 @@ static struct dasd_discipline dasd_eckd_discipline; ...@@ -72,7 +72,7 @@ static struct dasd_discipline dasd_eckd_discipline;
static struct ccw_device_id dasd_eckd_ids[] = { static struct ccw_device_id dasd_eckd_ids[] = {
{ CCW_DEVICE_DEVTYPE (0x3990, 0, 0x3390, 0), .driver_info = 0x1}, { CCW_DEVICE_DEVTYPE (0x3990, 0, 0x3390, 0), .driver_info = 0x1},
{ CCW_DEVICE_DEVTYPE (0x2105, 0, 0x3390, 0), .driver_info = 0x2}, { CCW_DEVICE_DEVTYPE (0x2105, 0, 0x3390, 0), .driver_info = 0x2},
{ CCW_DEVICE_DEVTYPE (0x3880, 0, 0x3390, 0), .driver_info = 0x3}, { CCW_DEVICE_DEVTYPE (0x3880, 0, 0x3380, 0), .driver_info = 0x3},
{ CCW_DEVICE_DEVTYPE (0x3990, 0, 0x3380, 0), .driver_info = 0x4}, { CCW_DEVICE_DEVTYPE (0x3990, 0, 0x3380, 0), .driver_info = 0x4},
{ CCW_DEVICE_DEVTYPE (0x2105, 0, 0x3380, 0), .driver_info = 0x5}, { CCW_DEVICE_DEVTYPE (0x2105, 0, 0x3380, 0), .driver_info = 0x5},
{ CCW_DEVICE_DEVTYPE (0x9343, 0, 0x9345, 0), .driver_info = 0x6}, { CCW_DEVICE_DEVTYPE (0x9343, 0, 0x9345, 0), .driver_info = 0x6},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册