diff options
Diffstat (limited to 'arch/avr32/kernel')
| -rw-r--r-- | arch/avr32/kernel/cpu.c | 48 | ||||
| -rw-r--r-- | arch/avr32/kernel/entry-avr32b.S | 3 | ||||
| -rw-r--r-- | arch/avr32/kernel/head.S | 20 | ||||
| -rw-r--r-- | arch/avr32/kernel/time.c | 2 | 
4 files changed, 29 insertions, 44 deletions
diff --git a/arch/avr32/kernel/cpu.c b/arch/avr32/kernel/cpu.c index 2233be71e2e..0341ae27c9e 100644 --- a/arch/avr32/kernel/cpu.c +++ b/arch/avr32/kernel/cpu.c @@ -39,10 +39,12 @@ static ssize_t store_pc0event(struct device *dev,  			      size_t count)  {  	unsigned long val; -	char *endp; +	int ret; -	val = simple_strtoul(buf, &endp, 0); -	if (endp == buf || val > 0x3f) +	ret = kstrtoul(buf, 0, &val); +	if (ret) +		return ret; +	if (val > 0x3f)  		return -EINVAL;  	val = (val << 12) | (sysreg_read(PCCR) & 0xfffc0fff);  	sysreg_write(PCCR, val); @@ -61,11 +63,11 @@ static ssize_t store_pc0count(struct device *dev,  				const char *buf, size_t count)  {  	unsigned long val; -	char *endp; +	int ret; -	val = simple_strtoul(buf, &endp, 0); -	if (endp == buf) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &val); +	if (ret) +		return ret;  	sysreg_write(PCNT0, val);  	return count; @@ -84,10 +86,12 @@ static ssize_t store_pc1event(struct device *dev,  			      size_t count)  {  	unsigned long val; -	char *endp; +	int ret; -	val = simple_strtoul(buf, &endp, 0); -	if (endp == buf || val > 0x3f) +	ret = kstrtoul(buf, 0, &val); +	if (ret) +		return ret; +	if (val > 0x3f)  		return -EINVAL;  	val = (val << 18) | (sysreg_read(PCCR) & 0xff03ffff);  	sysreg_write(PCCR, val); @@ -106,11 +110,11 @@ static ssize_t store_pc1count(struct device *dev,  			      size_t count)  {  	unsigned long val; -	char *endp; +	int ret; -	val = simple_strtoul(buf, &endp, 0); -	if (endp == buf) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &val); +	if (ret) +		return ret;  	sysreg_write(PCNT1, val);  	return count; @@ -129,11 +133,11 @@ static ssize_t store_pccycles(struct device *dev,  			      size_t count)  {  	unsigned long val; -	char *endp; +	int ret; -	val = simple_strtoul(buf, &endp, 0); -	if (endp == buf) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &val); +	if (ret) +		return ret;  	sysreg_write(PCCNT, val);  	return count; @@ -152,11 +156,11 @@ static ssize_t store_pcenable(struct device *dev,  			      size_t count)  {  	unsigned long pccr, val; -	char *endp; +	int ret; -	val = simple_strtoul(buf, &endp, 0); -	if (endp == buf) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &val); +	if (ret) +		return ret;  	if (val)  		val = 1; diff --git a/arch/avr32/kernel/entry-avr32b.S b/arch/avr32/kernel/entry-avr32b.S index 9899d3cc6f0..7301f4806bb 100644 --- a/arch/avr32/kernel/entry-avr32b.S +++ b/arch/avr32/kernel/entry-avr32b.S @@ -401,9 +401,10 @@ handle_critical:  	/* We should never get here... */  bad_return:  	sub	r12, pc, (. - 1f) -	bral	panic +	lddpc	pc, 2f  	.align	2  1:	.asciz	"Return from critical exception!" +2:	.long	panic  	.align	1  do_bus_error_write: diff --git a/arch/avr32/kernel/head.S b/arch/avr32/kernel/head.S index 6163bd0acb9..59eae6dfbed 100644 --- a/arch/avr32/kernel/head.S +++ b/arch/avr32/kernel/head.S @@ -10,33 +10,13 @@  #include <linux/linkage.h>  #include <asm/page.h> -#include <asm/thread_info.h> -#include <asm/sysreg.h>  	.section .init.text,"ax"  	.global kernel_entry  kernel_entry: -	/* Initialize status register */ -	lddpc   r0, init_sr -	mtsr	SYSREG_SR, r0 - -	/* Set initial stack pointer */ -	lddpc   sp, stack_addr -	sub	sp, -THREAD_SIZE - -#ifdef CONFIG_FRAME_POINTER -	/* Mark last stack frame */ -	mov	lr, 0 -	mov	r7, 0 -#endif -  	/* Start the show */  	lddpc   pc, kernel_start_addr  	.align  2 -init_sr: -	.long   0x007f0000	/* Supervisor mode, everything masked */ -stack_addr: -	.long   init_thread_union  kernel_start_addr:  	.long   start_kernel diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c index 12f828ad505..d0f771be9e9 100644 --- a/arch/avr32/kernel/time.c +++ b/arch/avr32/kernel/time.c @@ -59,7 +59,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)  static struct irqaction timer_irqaction = {  	.handler	= timer_interrupt,  	/* Oprofile uses the same irq as the timer, so allow it to be shared */ -	.flags		= IRQF_TIMER | IRQF_DISABLED | IRQF_SHARED, +	.flags		= IRQF_TIMER | IRQF_SHARED,  	.name		= "avr32_comparator",  };  | 
