Commit 67e26dda authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] s390: core

From: Martin Schwidefsky <schwidefsky@de.ibm.com>

s390 core changes:
 - Make use of the ipte instruction for ptep_set_access_flags
 - Fix atomic64_inc_and_test primitive as well.
 - Fix return type handler for __copy_in_user.
 - New default configuration.
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent b2a34aeb
......@@ -28,6 +28,7 @@ CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_EMBEDDED is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
......@@ -112,7 +113,6 @@ CONFIG_CHR_DEV_SG=y
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_REPORT_LUNS is not set
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
......@@ -126,6 +126,7 @@ CONFIG_SCSI_LOGGING=y
# SCSI low-level drivers
#
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_DEBUG is not set
......@@ -310,11 +311,7 @@ CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
#
# Ethernet (1000 Mbit)
#
#
# Ethernet (10000 Mbit)
# Gigabit Ethernet (1000/10000 Mbit)
#
#
......
......@@ -145,7 +145,7 @@ static __inline__ long long atomic64_inc_return(volatile atomic64_t * v)
}
static __inline__ long long atomic64_inc_and_test(volatile atomic64_t * v)
{
return __CSG_LOOP(v, 1, "agr") != 0;
return __CSG_LOOP(v, 1, "agr") == 0;
}
static __inline__ void atomic64_dec(volatile atomic64_t * v)
{
......
......@@ -587,6 +587,9 @@ ptep_establish(struct vm_area_struct *vma,
set_pte(ptep, entry);
}
#define ptep_set_access_flags(__vma, __address, __ptep, __entry, __dirty) \
ptep_establish(__vma, __address, __ptep, __entry)
/*
* Test and clear dirty bit in storage key.
* We can't clear the changed bit atomically. This is a potential
......@@ -784,6 +787,7 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
#define pgtable_cache_init() do { } while (0)
#define __HAVE_ARCH_PTEP_ESTABLISH
#define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
#define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
......
......@@ -326,12 +326,12 @@ copy_from_user(void *to, const void __user *from, unsigned long n)
return n;
}
extern long __copy_in_user_asm(const void *from, long n, void *to);
extern unsigned long __copy_in_user_asm(const void *from, long n, void *to);
static inline unsigned long
__copy_in_user(void __user *to, const void __user *from, unsigned long n)
{
__copy_in_user_asm(from, n, to);
return __copy_in_user_asm(from, n, to);
}
static inline unsigned long
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment