diff options
Diffstat (limited to 'arch/arm/kernel/perf_event.c')
| -rw-r--r-- | arch/arm/kernel/perf_event.c | 20 | 
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index c45768614c8..417c392ddf1 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c @@ -164,20 +164,20 @@ armpmu_event_set_period(struct perf_event *event,  			struct hw_perf_event *hwc,  			int idx)  { -	s64 left = atomic64_read(&hwc->period_left); +	s64 left = local64_read(&hwc->period_left);  	s64 period = hwc->sample_period;  	int ret = 0;  	if (unlikely(left <= -period)) {  		left = period; -		atomic64_set(&hwc->period_left, left); +		local64_set(&hwc->period_left, left);  		hwc->last_period = period;  		ret = 1;  	}  	if (unlikely(left <= 0)) {  		left += period; -		atomic64_set(&hwc->period_left, left); +		local64_set(&hwc->period_left, left);  		hwc->last_period = period;  		ret = 1;  	} @@ -185,7 +185,7 @@ armpmu_event_set_period(struct perf_event *event,  	if (left > (s64)armpmu->max_period)  		left = armpmu->max_period; -	atomic64_set(&hwc->prev_count, (u64)-left); +	local64_set(&hwc->prev_count, (u64)-left);  	armpmu->write_counter(idx, (u64)(-left) & 0xffffffff); @@ -201,21 +201,21 @@ armpmu_event_update(struct perf_event *event,  {  	int shift = 64 - 32;  	s64 prev_raw_count, new_raw_count; -	s64 delta; +	u64 delta;  again: -	prev_raw_count = atomic64_read(&hwc->prev_count); +	prev_raw_count = local64_read(&hwc->prev_count);  	new_raw_count = armpmu->read_counter(idx); -	if (atomic64_cmpxchg(&hwc->prev_count, prev_raw_count, +	if (local64_cmpxchg(&hwc->prev_count, prev_raw_count,  			     new_raw_count) != prev_raw_count)  		goto again;  	delta = (new_raw_count << shift) - (prev_raw_count << shift);  	delta >>= shift; -	atomic64_add(delta, &event->count); -	atomic64_sub(delta, &hwc->period_left); +	local64_add(delta, &event->count); +	local64_sub(delta, &hwc->period_left);  	return new_raw_count;  } @@ -478,7 +478,7 @@ __hw_perf_event_init(struct perf_event *event)  	if (!hwc->sample_period) {  		hwc->sample_period  = armpmu->max_period;  		hwc->last_period    = hwc->sample_period; -		atomic64_set(&hwc->period_left, hwc->sample_period); +		local64_set(&hwc->period_left, hwc->sample_period);  	}  	err = 0;  | 
