mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
[POWERPC] make spinlocks work in a combined kernel
If we build a pSeries/iSeries combined kernel, we will need this. Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
This commit is contained in:
parent
7dcd86e143
commit
4f896e53ee
@ -23,6 +23,7 @@
|
||||
#include <asm/hvcall.h>
|
||||
#include <asm/iseries/hv_call.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/firmware.h>
|
||||
|
||||
void __spin_yield(raw_spinlock_t *lock)
|
||||
{
|
||||
@ -39,13 +40,12 @@ void __spin_yield(raw_spinlock_t *lock)
|
||||
rmb();
|
||||
if (lock->slock != lock_value)
|
||||
return; /* something has changed */
|
||||
#ifdef CONFIG_PPC_ISERIES
|
||||
HvCall2(HvCallBaseYieldProcessor, HvCall_YieldToProc,
|
||||
((u64)holder_cpu << 32) | yield_count);
|
||||
#else
|
||||
plpar_hcall_norets(H_CONFER, get_hard_smp_processor_id(holder_cpu),
|
||||
yield_count);
|
||||
#endif
|
||||
if (firmware_has_feature(FW_FEATURE_ISERIES))
|
||||
HvCall2(HvCallBaseYieldProcessor, HvCall_YieldToProc,
|
||||
((u64)holder_cpu << 32) | yield_count);
|
||||
else
|
||||
plpar_hcall_norets(H_CONFER,
|
||||
get_hard_smp_processor_id(holder_cpu), yield_count);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -69,13 +69,12 @@ void __rw_yield(raw_rwlock_t *rw)
|
||||
rmb();
|
||||
if (rw->lock != lock_value)
|
||||
return; /* something has changed */
|
||||
#ifdef CONFIG_PPC_ISERIES
|
||||
HvCall2(HvCallBaseYieldProcessor, HvCall_YieldToProc,
|
||||
((u64)holder_cpu << 32) | yield_count);
|
||||
#else
|
||||
plpar_hcall_norets(H_CONFER, get_hard_smp_processor_id(holder_cpu),
|
||||
yield_count);
|
||||
#endif
|
||||
if (firmware_has_feature(FW_FEATURE_ISERIES))
|
||||
HvCall2(HvCallBaseYieldProcessor, HvCall_YieldToProc,
|
||||
((u64)holder_cpu << 32) | yield_count);
|
||||
else
|
||||
plpar_hcall_norets(H_CONFER,
|
||||
get_hard_smp_processor_id(holder_cpu), yield_count);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user