mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] make pfm_get_task work with virtual pids
[IA64] honor notify_die() returning NOTIFY_STOP
[IA64] remove dead code: __cpu_{down,die} from !HOTPLUG_CPU
[IA64] Appoint kvm/ia64 Maintainers
[IA64] ia64_set_psr should use srlz.i
[IA64] Export three symbols for module use
[IA64] mca style cleanup
[IA64] sn_hwperf semaphore to mutex
[IA64] generalize attribute of fsyscall_gtod_data
[IA64] efi.c Add /* never reached */ annotation
[IA64] efi.c Spelling/punctuation fixes
[IA64] Make efi.c mostly fit in 80 columns
[IA64] aliasing-test: fix gcc warnings on non-ia64
[IA64] Slim-down __clear_bit_unlock
[IA64] Fix the order of atomic operations in restore_previous_kprobes on ia64
[IA64] constify function pointer tables
[IA64] fix userspace compile error in gcc_intrin.h
This commit is contained in:
commit
21511abd0a
28 changed files with 468 additions and 376 deletions
|
|
@ -122,38 +122,40 @@ clear_bit_unlock (int nr, volatile void *addr)
|
|||
}
|
||||
|
||||
/**
|
||||
* __clear_bit_unlock - Non-atomically clear a bit with release
|
||||
* __clear_bit_unlock - Non-atomically clears a bit in memory with release
|
||||
* @nr: Bit to clear
|
||||
* @addr: Address to start counting from
|
||||
*
|
||||
* This is like clear_bit_unlock, but the implementation uses a store
|
||||
* Similarly to clear_bit_unlock, the implementation uses a store
|
||||
* with release semantics. See also __raw_spin_unlock().
|
||||
*/
|
||||
static __inline__ void
|
||||
__clear_bit_unlock(int nr, volatile void *addr)
|
||||
__clear_bit_unlock(int nr, void *addr)
|
||||
{
|
||||
__u32 mask, new;
|
||||
volatile __u32 *m;
|
||||
__u32 * const m = (__u32 *) addr + (nr >> 5);
|
||||
__u32 const new = *m & ~(1 << (nr & 31));
|
||||
|
||||
m = (volatile __u32 *)addr + (nr >> 5);
|
||||
mask = ~(1 << (nr & 31));
|
||||
new = *m & mask;
|
||||
barrier();
|
||||
ia64_st4_rel_nta(m, new);
|
||||
}
|
||||
|
||||
/**
|
||||
* __clear_bit - Clears a bit in memory (non-atomic version)
|
||||
* @nr: the bit to clear
|
||||
* @addr: the address to start counting from
|
||||
*
|
||||
* Unlike clear_bit(), this function is non-atomic and may be reordered.
|
||||
* If it's called on the same region of memory simultaneously, the effect
|
||||
* may be that only one operation succeeds.
|
||||
*/
|
||||
static __inline__ void
|
||||
__clear_bit (int nr, volatile void *addr)
|
||||
{
|
||||
volatile __u32 *p = (__u32 *) addr + (nr >> 5);
|
||||
__u32 m = 1 << (nr & 31);
|
||||
*p &= ~m;
|
||||
*((__u32 *) addr + (nr >> 5)) &= ~(1 << (nr & 31));
|
||||
}
|
||||
|
||||
/**
|
||||
* change_bit - Toggle a bit in memory
|
||||
* @nr: Bit to clear
|
||||
* @nr: Bit to toggle
|
||||
* @addr: Address to start counting from
|
||||
*
|
||||
* change_bit() is atomic and may not be reordered.
|
||||
|
|
@ -178,7 +180,7 @@ change_bit (int nr, volatile void *addr)
|
|||
|
||||
/**
|
||||
* __change_bit - Toggle a bit in memory
|
||||
* @nr: the bit to set
|
||||
* @nr: the bit to toggle
|
||||
* @addr: the address to start counting from
|
||||
*
|
||||
* Unlike change_bit(), this function is non-atomic and may be reordered.
|
||||
|
|
@ -197,7 +199,7 @@ __change_bit (int nr, volatile void *addr)
|
|||
* @addr: Address to count from
|
||||
*
|
||||
* This operation is atomic and cannot be reordered.
|
||||
* It also implies a memory barrier.
|
||||
* It also implies the acquisition side of the memory barrier.
|
||||
*/
|
||||
static __inline__ int
|
||||
test_and_set_bit (int nr, volatile void *addr)
|
||||
|
|
@ -247,11 +249,11 @@ __test_and_set_bit (int nr, volatile void *addr)
|
|||
|
||||
/**
|
||||
* test_and_clear_bit - Clear a bit and return its old value
|
||||
* @nr: Bit to set
|
||||
* @nr: Bit to clear
|
||||
* @addr: Address to count from
|
||||
*
|
||||
* This operation is atomic and cannot be reordered.
|
||||
* It also implies a memory barrier.
|
||||
* It also implies the acquisition side of the memory barrier.
|
||||
*/
|
||||
static __inline__ int
|
||||
test_and_clear_bit (int nr, volatile void *addr)
|
||||
|
|
@ -272,7 +274,7 @@ test_and_clear_bit (int nr, volatile void *addr)
|
|||
|
||||
/**
|
||||
* __test_and_clear_bit - Clear a bit and return its old value
|
||||
* @nr: Bit to set
|
||||
* @nr: Bit to clear
|
||||
* @addr: Address to count from
|
||||
*
|
||||
* This operation is non-atomic and can be reordered.
|
||||
|
|
@ -292,11 +294,11 @@ __test_and_clear_bit(int nr, volatile void * addr)
|
|||
|
||||
/**
|
||||
* test_and_change_bit - Change a bit and return its old value
|
||||
* @nr: Bit to set
|
||||
* @nr: Bit to change
|
||||
* @addr: Address to count from
|
||||
*
|
||||
* This operation is atomic and cannot be reordered.
|
||||
* It also implies a memory barrier.
|
||||
* It also implies the acquisition side of the memory barrier.
|
||||
*/
|
||||
static __inline__ int
|
||||
test_and_change_bit (int nr, volatile void *addr)
|
||||
|
|
@ -315,8 +317,12 @@ test_and_change_bit (int nr, volatile void *addr)
|
|||
return (old & bit) != 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* WARNING: non atomic version.
|
||||
/**
|
||||
* __test_and_change_bit - Change a bit and return its old value
|
||||
* @nr: Bit to change
|
||||
* @addr: Address to count from
|
||||
*
|
||||
* This operation is non-atomic and can be reordered.
|
||||
*/
|
||||
static __inline__ int
|
||||
__test_and_change_bit (int nr, void *addr)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,9 @@
|
|||
extern void ia64_bad_param_for_setreg (void);
|
||||
extern void ia64_bad_param_for_getreg (void);
|
||||
|
||||
#ifdef __KERNEL__
|
||||
register unsigned long ia64_r13 asm ("r13") __used;
|
||||
#endif
|
||||
|
||||
#define ia64_setreg(regnum, val) \
|
||||
({ \
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
* Purpose: Machine check handling specific defines
|
||||
*
|
||||
* Copyright (C) 1999, 2004 Silicon Graphics, Inc.
|
||||
* Copyright (C) Vijay Chander (vijay@engr.sgi.com)
|
||||
* Copyright (C) Srinivasa Thirumalachar (sprasad@engr.sgi.com)
|
||||
* Copyright (C) Russ Anderson (rja@sgi.com)
|
||||
* Copyright (C) Vijay Chander <vijay@engr.sgi.com>
|
||||
* Copyright (C) Srinivasa Thirumalachar <sprasad@engr.sgi.com>
|
||||
* Copyright (C) Russ Anderson <rja@sgi.com>
|
||||
*/
|
||||
|
||||
#ifndef _ASM_IA64_MCA_H
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
/*
|
||||
* File: mca_asm.h
|
||||
* Purpose: Machine check handling specific defines
|
||||
*
|
||||
* Copyright (C) 1999 Silicon Graphics, Inc.
|
||||
* Copyright (C) Vijay Chander (vijay@engr.sgi.com)
|
||||
* Copyright (C) Vijay Chander <vijay@engr.sgi.com>
|
||||
* Copyright (C) Srinivasa Thirumalachar <sprasad@engr.sgi.com>
|
||||
* Copyright (C) 2000 Hewlett-Packard Co.
|
||||
* Copyright (C) 2000 David Mosberger-Tang <davidm@hpl.hp.com>
|
||||
|
|
|
|||
|
|
@ -473,7 +473,7 @@ ia64_set_psr (__u64 psr)
|
|||
{
|
||||
ia64_stop();
|
||||
ia64_setreg(_IA64_REG_PSR_L, psr);
|
||||
ia64_srlz_d();
|
||||
ia64_srlz_i();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -649,17 +649,6 @@ typedef struct err_rec {
|
|||
* Now define a couple of inline functions for improved type checking
|
||||
* and convenience.
|
||||
*/
|
||||
static inline long
|
||||
ia64_sal_freq_base (unsigned long which, unsigned long *ticks_per_second,
|
||||
unsigned long *drift_info)
|
||||
{
|
||||
struct ia64_sal_retval isrv;
|
||||
|
||||
SAL_CALL(isrv, SAL_FREQ_BASE, which, 0, 0, 0, 0, 0, 0);
|
||||
*ticks_per_second = isrv.v0;
|
||||
*drift_info = isrv.v1;
|
||||
return isrv.status;
|
||||
}
|
||||
|
||||
extern s64 ia64_sal_cache_flush (u64 cache_type);
|
||||
extern void __init check_sal_cache_flush (void);
|
||||
|
|
@ -841,6 +830,9 @@ extern int ia64_sal_oemcall_nolock(struct ia64_sal_retval *, u64, u64, u64,
|
|||
u64, u64, u64, u64, u64);
|
||||
extern int ia64_sal_oemcall_reentrant(struct ia64_sal_retval *, u64, u64, u64,
|
||||
u64, u64, u64, u64, u64);
|
||||
extern long
|
||||
ia64_sal_freq_base (unsigned long which, unsigned long *ticks_per_second,
|
||||
unsigned long *drift_info);
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
/*
|
||||
* System Abstraction Layer Specification
|
||||
|
|
|
|||
Loading…
Reference in a new issue