diff options
| author | Andreas Engel <andreas.engel@ericsson.com> | 2008-01-14 09:06:52 +0000 | 
|---|---|---|
| committer | Peter Pearse <peter.pearse@arm.com> | 2008-02-14 09:38:21 +0000 | 
| commit | 6d0943a6be99977d6d853d51749e9963d68eb192 (patch) | |
| tree | 2c32a11b09ccd605e425de697f44bfa5003e719c | |
| parent | fe891ecf4d187e9d11dde869ed4623af52b54451 (diff) | |
| download | olio-uboot-2014.01-6d0943a6be99977d6d853d51749e9963d68eb192.tar.xz olio-uboot-2014.01-6d0943a6be99977d6d853d51749e9963d68eb192.zip | |
ARM: cleanup duplicated exception handlingcode
Move duplicated exception handling code into lib_arm.
Signed-off-by: Andreas Engel <andreas.engel@ericsson.com>
| -rw-r--r-- | cpu/arm1136/interrupts.c | 134 | ||||
| -rw-r--r-- | cpu/arm720t/interrupts.c | 132 | ||||
| -rw-r--r-- | cpu/arm920t/interrupts.c | 135 | ||||
| -rw-r--r-- | cpu/arm925t/interrupts.c | 135 | ||||
| -rw-r--r-- | cpu/arm926ejs/interrupts.c | 134 | ||||
| -rw-r--r-- | cpu/arm946es/interrupts.c | 134 | ||||
| -rw-r--r-- | cpu/arm_intcm/Makefile | 2 | ||||
| -rw-r--r-- | cpu/ixp/interrupts.c | 132 | ||||
| -rw-r--r-- | cpu/lh7a40x/interrupts.c | 135 | ||||
| -rw-r--r-- | cpu/pxa/interrupts.c | 117 | ||||
| -rw-r--r-- | cpu/s3c44b0/interrupts.c | 104 | ||||
| -rw-r--r-- | cpu/sa1100/interrupts.c | 137 | ||||
| -rw-r--r-- | lib_arm/Makefile | 2 | ||||
| -rw-r--r-- | lib_arm/interrupts.c (renamed from cpu/arm_intcm/interrupts.c) | 34 | 
14 files changed, 19 insertions, 1448 deletions
| diff --git a/cpu/arm1136/interrupts.c b/cpu/arm1136/interrupts.c index 1dc36d034..491c902ac 100644 --- a/cpu/arm1136/interrupts.c +++ b/cpu/arm1136/interrupts.c @@ -37,145 +37,11 @@  # include <asm/arch/omap2420.h>  #endif -#include <asm/proc-armv/ptrace.h> -  #define TIMER_LOAD_VAL 0  /* macro to read the 32 bit timer */  #define READ_TIMER (*(volatile ulong *)(CFG_TIMERBASE+TCRR)) -#ifdef CONFIG_USE_IRQ -/* enable IRQ interrupts */ -void enable_interrupts (void) -{ -	unsigned long temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -						 "bic %0, %0, #0x80\n" -						 "msr cpsr_c, %0" -						 : "=r" (temp) -						 : -						 : "memory"); -} - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -	unsigned long old,temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -						 "orr %1, %0, #0xc0\n" -						 "msr cpsr_c, %1" -						 : "=r" (old), "=r" (temp) -						 : -						 : "memory"); -	return(old & 0x80) == 0; -} -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -} -#endif - - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -		"USER_26",  "FIQ_26",   "IRQ_26",   "SVC_26", -		"UK4_26",   "UK5_26",   "UK6_26",   "UK7_26", -		"UK8_26",   "UK9_26",   "UK10_26",  "UK11_26", -		"UK12_26",  "UK13_26",  "UK14_26",  "UK15_26", -		"USER_32",  "FIQ_32",   "IRQ_32",   "SVC_32", -		"UK4_32",   "UK5_32",   "UK6_32",   "ABT_32", -		"UK8_32",   "UK9_32",   "UK10_32",  "UND_32", -		"UK12_32",  "UK13_32",  "UK14_32",  "SYS_32", -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -			"sp : %08lx  ip : %08lx  fp : %08lx\n", -			instruction_pointer (regs), -			regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", -			regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", -			regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", -			regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -			flags & CC_N_BIT ? 'N' : 'n', -			flags & CC_Z_BIT ? 'Z' : 'z', -			flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -			interrupts_enabled (regs) ? "on" : "off", -			fast_interrupts_enabled (regs) ? "on" : "off", -			processor_modes[processor_mode (regs)], -			thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_irq (struct pt_regs *pt_regs) -{ -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} -  #if defined(CONFIG_INTEGRATOR) && defined(CONFIG_ARCH_CINTEGRATOR)  /* Use the IntegratorCP function from board/integratorcp.c */  #else diff --git a/cpu/arm720t/interrupts.c b/cpu/arm720t/interrupts.c index 8f32124d3..475607d95 100644 --- a/cpu/arm720t/interrupts.c +++ b/cpu/arm720t/interrupts.c @@ -60,137 +60,9 @@ static struct _irq_handler IRQ_HANDLER[N_IRQS];  #endif	/* CONFIG_S3C4510B */  #ifdef CONFIG_USE_IRQ -/* enable IRQ/FIQ interrupts */ -void enable_interrupts (void) -{ -	unsigned long temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "bic %0, %0, #0x80\n" -			     "msr cpsr_c, %0" -			     : "=r" (temp) -			     : -			     : "memory"); -} - - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -	unsigned long old,temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "orr %1, %0, #0x80\n" -			     "msr cpsr_c, %1" -			     : "=r" (old), "=r" (temp) -			     : -			     : "memory"); -	return (old & 0x80) == 0; -} -#else /* CONFIG_USE_IRQ */ -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -} -#endif - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = -		{ "USER_26", "FIQ_26", "IRQ_26", "SVC_26", "UK4_26", "UK5_26", -"UK6_26", "UK7_26", -		"UK8_26", "UK9_26", "UK10_26", "UK11_26", "UK12_26", "UK13_26", -				"UK14_26", "UK15_26", -		"USER_32", "FIQ_32", "IRQ_32", "SVC_32", "UK4_32", "UK5_32", -				"UK6_32", "ABT_32", -		"UK8_32", "UK9_32", "UK10_32", "UND_32", "UK12_32", "UK13_32", -				"UK14_32", "SYS_32" -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]	   lr : [<%08lx>]\n" -			"sp : %08lx  ip : %08lx	 fp : %08lx\n", -			instruction_pointer (regs), -			regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx	 r8 : %08lx\n", -			regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx	 r5 : %08lx  r4 : %08lx\n", -			regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx	 r1 : %08lx  r0 : %08lx\n", -			regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -			flags & CC_N_BIT ? 'N' : 'n', -			flags & CC_Z_BIT ? 'Z' : 'z', -			flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -			interrupts_enabled (regs) ? "on" : "off", -			fast_interrupts_enabled (regs) ? "on" : "off", -			processor_modes[processor_mode (regs)], -			thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} -  void do_irq (struct pt_regs *pt_regs)  { -#if defined(CONFIG_IMPA7) || defined(CONFIG_EP7312) || defined(CONFIG_NETARM) || defined(CONFIG_ARMADILLO) -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -#elif defined(CONFIG_S3C4510B) +#if defined(CONFIG_S3C4510B)  	unsigned int pending;  	while ( (pending = GET_REG( REG_INTOFFSET)) != 0x54) {  /* sentinal value for no pending interrutps */ @@ -212,7 +84,7 @@ void do_irq (struct pt_regs *pt_regs)  #error do_irq() not defined for this CPU type  #endif  } - +#endif  #ifdef CONFIG_S3C4510B  static void default_isr( void *data) { diff --git a/cpu/arm920t/interrupts.c b/cpu/arm920t/interrupts.c index 0a6d94f74..c9cd066c9 100644 --- a/cpu/arm920t/interrupts.c +++ b/cpu/arm920t/interrupts.c @@ -31,149 +31,20 @@  #include <common.h>  #include <arm920t.h> -#include <asm/proc-armv/ptrace.h>  #ifdef CONFIG_USE_IRQ -/* enable IRQ interrupts */ -void enable_interrupts (void) -{ -	unsigned long temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "bic %0, %0, #0x80\n" -			     "msr cpsr_c, %0" -			     : "=r" (temp) -			     : -			     : "memory"); -} - - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -	unsigned long old,temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "orr %1, %0, #0xc0\n" -			     "msr cpsr_c, %1" -			     : "=r" (old), "=r" (temp) -			     : -			     : "memory"); -	return (old & 0x80) == 0; -} -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -} -#endif - - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26", -	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26", -	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26", -	"UK12_26",	"UK13_26",	"UK14_26",	"UK15_26", -	"USER_32",	"FIQ_32",	"IRQ_32",	"SVC_32", -	"UK4_32",	"UK5_32",	"UK6_32",	"ABT_32", -	"UK8_32",	"UK9_32",	"UK10_32",	"UND_32", -	"UK12_32",	"UK13_32",	"UK14_32",	"SYS_32", -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx  fp : %08lx\n", -		instruction_pointer (regs), -		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", -		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", -		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", -		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -		flags & CC_N_BIT ? 'N' : 'n', -		flags & CC_Z_BIT ? 'Z' : 'z', -		flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -		interrupts_enabled (regs) ? "on" : "off", -		fast_interrupts_enabled (regs) ? "on" : "off", -		processor_modes[processor_mode (regs)], -		thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - +#include <asm/proc-armv/ptrace.h>  void do_irq (struct pt_regs *pt_regs)  { -#if defined (CONFIG_USE_IRQ)  #if defined (ARM920_IRQ_CALLBACK)  	ARM920_IRQ_CALLBACK(); -	return;  #elif defined (CONFIG_ARCH_INTEGRATOR)  	/* ASSUMED to be a timer interrupt  */  	/* Just clear it - count handled in */  	/* integratorap.c                   */  	*(volatile ulong *)(CFG_TIMERBASE + 0x0C) = 0; -#endif /* ARCH_INTEGRATOR */  #else -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); +#error do_irq() not defined for this cpu type  #endif  } +#endif diff --git a/cpu/arm925t/interrupts.c b/cpu/arm925t/interrupts.c index 57bb4eab6..208a25bd9 100644 --- a/cpu/arm925t/interrupts.c +++ b/cpu/arm925t/interrupts.c @@ -36,146 +36,11 @@  #include <arm925t.h>  #include <configs/omap1510.h> -#include <asm/proc-armv/ptrace.h> -  #define TIMER_LOAD_VAL 0xffffffff  /* macro to read the 32 bit timer */  #define READ_TIMER (*(volatile ulong *)(CFG_TIMERBASE+8)) -#ifdef CONFIG_USE_IRQ -/* enable IRQ interrupts */ -void enable_interrupts (void) -{ -	unsigned long temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "bic %0, %0, #0x80\n" -			     "msr cpsr_c, %0" -			     : "=r" (temp) -			     : -			     : "memory"); -} - - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -	unsigned long old,temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "orr %1, %0, #0xc0\n" -			     "msr cpsr_c, %1" -			     : "=r" (old), "=r" (temp) -			     : -			     : "memory"); -	return (old & 0x80) == 0; -} -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -} -#endif - - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26", -	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26", -	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26", -	"UK12_26",	"UK13_26",	"UK14_26",	"UK15_26", -	"USER_32",	"FIQ_32",	"IRQ_32",	"SVC_32", -	"UK4_32",	"UK5_32",	"UK6_32",	"ABT_32", -	"UK8_32",	"UK9_32",	"UK10_32",	"UND_32", -	"UK12_32",	"UK13_32",	"UK14_32",	"SYS_32", -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]	   lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx	 fp : %08lx\n", -		instruction_pointer (regs), -		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx	 r8 : %08lx\n", -		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx	 r5 : %08lx  r4 : %08lx\n", -		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx	 r1 : %08lx  r0 : %08lx\n", -		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -		flags & CC_N_BIT ? 'N' : 'n', -		flags & CC_Z_BIT ? 'Z' : 'z', -		flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -		interrupts_enabled (regs) ? "on" : "off", -		fast_interrupts_enabled (regs) ? "on" : "off", -		processor_modes[processor_mode (regs)], -		thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_irq (struct pt_regs *pt_regs) -{ -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} -  static ulong timestamp;  static ulong lastdec; diff --git a/cpu/arm926ejs/interrupts.c b/cpu/arm926ejs/interrupts.c index 9cac969f6..1819f6b07 100644 --- a/cpu/arm926ejs/interrupts.c +++ b/cpu/arm926ejs/interrupts.c @@ -37,140 +37,6 @@  #include <common.h>  #include <arm926ejs.h> -#include <asm/proc-armv/ptrace.h> - -#ifdef CONFIG_USE_IRQ -/* enable IRQ interrupts */ -void enable_interrupts (void) -{ -	unsigned long temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "bic %0, %0, #0x80\n" -			     "msr cpsr_c, %0" -			     : "=r" (temp) -			     : -			     : "memory"); -} - - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -	unsigned long old,temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "orr %1, %0, #0xc0\n" -			     "msr cpsr_c, %1" -			     : "=r" (old), "=r" (temp) -			     : -			     : "memory"); -	return (old & 0x80) == 0; -} -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -} -#endif - - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26", -	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26", -	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26", -	"UK12_26",	"UK13_26",	"UK14_26",	"UK15_26", -	"USER_32",	"FIQ_32",	"IRQ_32",	"SVC_32", -	"UK4_32",	"UK5_32",	"UK6_32",	"ABT_32", -	"UK8_32",	"UK9_32",	"UK10_32",	"UND_32", -	"UK12_32",	"UK13_32",	"UK14_32",	"SYS_32", -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]	   lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx	 fp : %08lx\n", -		instruction_pointer (regs), -		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx	 r8 : %08lx\n", -		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx	 r5 : %08lx  r4 : %08lx\n", -		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx	 r1 : %08lx  r0 : %08lx\n", -		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -		flags & CC_N_BIT ? 'N' : 'n', -		flags & CC_Z_BIT ? 'Z' : 'z', -		flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -		interrupts_enabled (regs) ? "on" : "off", -		fast_interrupts_enabled (regs) ? "on" : "off", -		processor_modes[processor_mode (regs)], -		thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_irq (struct pt_regs *pt_regs) -{ -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -}  #ifdef CONFIG_INTEGRATOR diff --git a/cpu/arm946es/interrupts.c b/cpu/arm946es/interrupts.c index 5728c3a44..a2c3646f1 100644 --- a/cpu/arm946es/interrupts.c +++ b/cpu/arm946es/interrupts.c @@ -37,144 +37,10 @@  #include <common.h>  #include <arm946es.h> -#include <asm/proc-armv/ptrace.h>  #define TIMER_LOAD_VAL 0xffffffff  extern void reset_cpu(ulong addr); -#ifdef CONFIG_USE_IRQ -/* enable IRQ interrupts */ -void enable_interrupts (void) -{ -	unsigned long temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "bic %0, %0, #0x80\n" -			     "msr cpsr_c, %0" -			     : "=r" (temp) -			     : -			     : "memory"); -} - - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -	unsigned long old,temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "orr %1, %0, #0xc0\n" -			     "msr cpsr_c, %1" -			     : "=r" (old), "=r" (temp) -			     : -			     : "memory"); -	return (old & 0x80) == 0; -} -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -} -#endif - - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26", -	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26", -	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26", -	"UK12_26",	"UK13_26",	"UK14_26",	"UK15_26", -	"USER_32",	"FIQ_32",	"IRQ_32",	"SVC_32", -	"UK4_32",	"UK5_32",	"UK6_32",	"ABT_32", -	"UK8_32",	"UK9_32",	"UK10_32",	"UND_32", -	"UK12_32",	"UK13_32",	"UK14_32",	"SYS_32", -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx  fp : %08lx\n", -		instruction_pointer (regs), -		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", -		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", -		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", -		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -		flags & CC_N_BIT ? 'N' : 'n', -		flags & CC_Z_BIT ? 'Z' : 'z', -		flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -		interrupts_enabled (regs) ? "on" : "off", -		fast_interrupts_enabled (regs) ? "on" : "off", -		processor_modes[processor_mode (regs)], -		thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_irq (struct pt_regs *pt_regs) -{ -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} -  #ifdef CONFIG_INTEGRATOR  	/* Timer functionality supplied by Integrator board (AP or CP) */  #else diff --git a/cpu/arm_intcm/Makefile b/cpu/arm_intcm/Makefile index d5ac7d3fd..7701b03bb 100644 --- a/cpu/arm_intcm/Makefile +++ b/cpu/arm_intcm/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk  LIB	= $(obj)lib$(CPU).a  START	= start.o -COBJS	= interrupts.o cpu.o +COBJS	= cpu.o  SRCS	:= $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c)  OBJS	:= $(addprefix $(obj),$(COBJS) $(SOBJS)) diff --git a/cpu/ixp/interrupts.c b/cpu/ixp/interrupts.c index 2dd9561e1..84fe9378a 100644 --- a/cpu/ixp/interrupts.c +++ b/cpu/ixp/interrupts.c @@ -33,6 +33,8 @@  #include <asm/arch/ixp425.h>  #ifdef CONFIG_USE_IRQ +#include <asm/proc-armv/ptrace.h> +  /*   * When interrupts are enabled, use timer 2 for time/delay generation...   */ @@ -50,34 +52,6 @@ static struct _irq_handler IRQ_HANDLER[N_IRQS];  static volatile ulong timestamp; -/* enable IRQ/FIQ interrupts */ -void enable_interrupts(void) -{ -	unsigned long temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "bic %0, %0, #0x80\n" -			     "msr cpsr_c, %0" -			     : "=r" (temp) -			     : -			     : "memory"); -} - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts(void) -{ -	unsigned long old,temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "orr %1, %0, #0x80\n" -			     "msr cpsr_c, %1" -			     : "=r" (old), "=r" (temp) -			     : -			     : "memory"); -	return (old & 0x80) == 0; -} -  static void default_isr(void *data)  {  	printf("default_isr():  called for IRQ %d, Interrupt Status=%x PR=%x\n", @@ -111,114 +85,16 @@ void reset_timer (void)  	timestamp = 0;  } -#else /* #ifdef CONFIG_USE_IRQ */ -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -}  #endif /* #ifdef CONFIG_USE_IRQ */ -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26", -	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26", -	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26", -	"UK12_26",	"UK13_26",	"UK14_26",	"UK15_26", -	"USER_32",	"FIQ_32",	"IRQ_32",	"SVC_32", -	"UK4_32",	"UK5_32",	"UK6_32",	"ABT_32", -	"UK8_32",	"UK9_32",	"UK10_32",	"UND_32", -	"UK12_32",	"UK13_32",	"UK14_32",	"SYS_32" -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx  fp : %08lx\n", -		instruction_pointer (regs), -		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", -		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", -		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", -		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -		flags & CC_N_BIT ? 'N' : 'n', -		flags & CC_Z_BIT ? 'Z' : 'z', -		flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -		interrupts_enabled (regs) ? "on" : "off", -		fast_interrupts_enabled (regs) ? "on" : "off", -		processor_modes[processor_mode (regs)], -		thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	printf("IRQ=%08lx FIQ=%08lx\n", *IXP425_ICIH, *IXP425_ICFH); -} - +#ifdef CONFIG_USE_IRQ  void do_irq (struct pt_regs *pt_regs)  { -#ifdef CONFIG_USE_IRQ  	int irq = next_irq();  	IRQ_HANDLER[irq].m_func(IRQ_HANDLER[irq].m_data); -#else -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -#endif  } +#endif  int interrupt_init (void)  { diff --git a/cpu/lh7a40x/interrupts.c b/cpu/lh7a40x/interrupts.c index 23d803993..d01787f91 100644 --- a/cpu/lh7a40x/interrupts.c +++ b/cpu/lh7a40x/interrupts.c @@ -33,8 +33,6 @@  #include <arm920t.h>  #include <lh7a40x.h> -#include <asm/proc-armv/ptrace.h> -  static ulong timer_load_val = 0;  /* macro to read the 16 bit timer */ @@ -46,139 +44,6 @@ static inline ulong READ_TIMER(void)  	return (timer->value & 0x0000ffff);  } -#ifdef CONFIG_USE_IRQ -/* enable IRQ interrupts */ -void enable_interrupts (void) -{ -	unsigned long temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "bic %0, %0, #0x80\n" -			     "msr cpsr_c, %0" -			     : "=r" (temp) -			     : -			     : "memory"); -} - - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -	unsigned long old,temp; -	__asm__ __volatile__("mrs %0, cpsr\n" -			     "orr %1, %0, #0xc0\n" -			     "msr cpsr_c, %1" -			     : "=r" (old), "=r" (temp) -			     : -			     : "memory"); -	return (old & 0x80) == 0; -} -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -} -#endif - - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26", -	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26", -	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26", -	"UK12_26",	"UK13_26",	"UK14_26",	"UK15_26", -	"USER_32",	"FIQ_32",	"IRQ_32",	"SVC_32", -	"UK4_32",	"UK5_32",	"UK6_32",	"ABT_32", -	"UK8_32",	"UK9_32",	"UK10_32",	"UND_32", -	"UK12_32",	"UK13_32",	"UK14_32",	"SYS_32", -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx  fp : %08lx\n", -		instruction_pointer (regs), -		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", -		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", -		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", -		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -		flags & CC_N_BIT ? 'N' : 'n', -		flags & CC_Z_BIT ? 'Z' : 'z', -		flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -		interrupts_enabled (regs) ? "on" : "off", -		fast_interrupts_enabled (regs) ? "on" : "off", -		processor_modes[processor_mode (regs)], -		thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_irq (struct pt_regs *pt_regs) -{ -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} -  static ulong timestamp;  static ulong lastdec; diff --git a/cpu/pxa/interrupts.c b/cpu/pxa/interrupts.c index 0479a1048..8b577e135 100644 --- a/cpu/pxa/interrupts.c +++ b/cpu/pxa/interrupts.c @@ -30,126 +30,9 @@  #include <asm/arch/pxa-regs.h>  #ifdef CONFIG_USE_IRQ -/* enable IRQ/FIQ interrupts */ -void enable_interrupts (void) -{  #error: interrupts not implemented yet -} - - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -#error: interrupts not implemented yet -} -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -}  #endif - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26", -	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26", -	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26", -	"UK12_26",	"UK13_26",	"UK14_26",	"UK15_26", -	"USER_32",	"FIQ_32",	"IRQ_32",	"SVC_32", -	"UK4_32",	"UK5_32",	"UK6_32",	"ABT_32", -	"UK8_32",	"UK9_32",	"UK10_32",	"UND_32", -	"UK12_32",	"UK13_32",	"UK14_32",	"SYS_32" -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx  fp : %08lx\n", -		instruction_pointer (regs), -		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", -		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", -		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", -		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -		flags & CC_N_BIT ? 'N' : 'n', -		flags & CC_Z_BIT ? 'Z' : 'z', -		flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -		interrupts_enabled (regs) ? "on" : "off", -		fast_interrupts_enabled (regs) ? "on" : "off", -		processor_modes[processor_mode (regs)], -		thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_irq (struct pt_regs *pt_regs) -{ -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -  int interrupt_init (void)  {  	/* nothing happens here - we don't setup any IRQs */ diff --git a/cpu/s3c44b0/interrupts.c b/cpu/s3c44b0/interrupts.c index 5d2c13d97..ed7964844 100644 --- a/cpu/s3c44b0/interrupts.c +++ b/cpu/s3c44b0/interrupts.c @@ -27,8 +27,6 @@  #include <common.h>  #include <asm/hardware.h> -#include <asm/proc-armv/ptrace.h> -  /* we always count down the max. */  #define TIMER_LOAD_VAL 0xffff @@ -37,110 +35,8 @@  #ifdef CONFIG_USE_IRQ  #error CONFIG_USE_IRQ NOT supported -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -}  #endif - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = -		{ "USER_26", "FIQ_26", "IRQ_26", "SVC_26", "UK4_26", "UK5_26", -				"UK6_26", "UK7_26", -		"UK8_26", "UK9_26", "UK10_26", "UK11_26", "UK12_26", "UK13_26", -				"UK14_26", "UK15_26", -		"USER_32", "FIQ_32", "IRQ_32", "SVC_32", "UK4_32", "UK5_32", -				"UK6_32", "ABT_32", -		"UK8_32", "UK9_32", "UK10_32", "UND_32", "UK12_32", "UK13_32", -				"UK14_32", "SYS_32" -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -			"sp : %08lx  ip : %08lx  fp : %08lx\n", -			instruction_pointer (regs), -			regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", -			regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", -			regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", -			regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -			flags & CC_N_BIT ? 'N' : 'n', -			flags & CC_Z_BIT ? 'Z' : 'z', -			flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -			interrupts_enabled (regs) ? "on" : "off", -			fast_interrupts_enabled (regs) ? "on" : "off", -			processor_modes[processor_mode (regs)], -			thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_irq (struct pt_regs *pt_regs) -{ -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} -  static ulong timestamp;  static ulong lastdec; diff --git a/cpu/sa1100/interrupts.c b/cpu/sa1100/interrupts.c index b393e0d43..53f27456a 100644 --- a/cpu/sa1100/interrupts.c +++ b/cpu/sa1100/interrupts.c @@ -29,143 +29,6 @@  #include <common.h>  #include <SA-1100.h> -#include <asm/proc-armv/ptrace.h> - -#ifdef CONFIG_USE_IRQ -/* enable IRQ/FIQ interrupts */ -void enable_interrupts (void) -{ -	unsigned long temp; -	__asm__ __volatile__ ("mrs %0, cpsr\n" -			      "bic %0, %0, #0x80\n" -			      "msr cpsr_c, %0" -			      : "=r" (temp) -			      : -			      : "memory"); -} - - -/* - * disable IRQ/FIQ interrupts - * returns true if interrupts had been enabled before we disabled them - */ -int disable_interrupts (void) -{ -	unsigned long old, temp; -	__asm__ __volatile__ ("mrs %0, cpsr\n" -			      "orr %1, %0, #0x80\n" -			      "msr cpsr_c, %1" -			      : "=r" (old), "=r" (temp) -			      : -			      : "memory"); - -	return (old & 0x80) == 0; -} -#else -void enable_interrupts (void) -{ -	return; -} -int disable_interrupts (void) -{ -	return 0; -} -#endif - - -void bad_mode (void) -{ -	panic ("Resetting CPU ...\n"); -	reset_cpu (0); -} - -void show_regs (struct pt_regs *regs) -{ -	unsigned long flags; -	const char *processor_modes[] = { -	"USER_26",	"FIQ_26",	"IRQ_26",	"SVC_26", -	"UK4_26",	"UK5_26",	"UK6_26",	"UK7_26", -	"UK8_26",	"UK9_26",	"UK10_26",	"UK11_26", -	"UK12_26",	"UK13_26",	"UK14_26",	"UK15_26", -	"USER_32",	"FIQ_32",	"IRQ_32",	"SVC_32", -	"UK4_32",	"UK5_32",	"UK6_32",	"ABT_32", -	"UK8_32",	"UK9_32",	"UK10_32",	"UND_32", -	"UK12_32",	"UK13_32",	"UK14_32",	"SYS_32" -	}; - -	flags = condition_codes (regs); - -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx  fp : %08lx\n", -		instruction_pointer (regs), -		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", -		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", -		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", -		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0); -	printf ("Flags: %c%c%c%c", -		flags & CC_N_BIT ? 'N' : 'n', -		flags & CC_Z_BIT ? 'Z' : 'z', -		flags & CC_C_BIT ? 'C' : 'c', flags & CC_V_BIT ? 'V' : 'v'); -	printf ("  IRQs %s  FIQs %s  Mode %s%s\n", -		interrupts_enabled (regs) ? "on" : "off", -		fast_interrupts_enabled (regs) ? "on" : "off", -		processor_modes[processor_mode (regs)], -		thumb_mode (regs) ? " (T)" : ""); -} - -void do_undefined_instruction (struct pt_regs *pt_regs) -{ -	printf ("undefined instruction\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_software_interrupt (struct pt_regs *pt_regs) -{ -	printf ("software interrupt\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_prefetch_abort (struct pt_regs *pt_regs) -{ -	printf ("prefetch abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_data_abort (struct pt_regs *pt_regs) -{ -	printf ("data abort\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_not_used (struct pt_regs *pt_regs) -{ -	printf ("not used\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_fiq (struct pt_regs *pt_regs) -{ -	printf ("fast interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -void do_irq (struct pt_regs *pt_regs) -{ -	printf ("interrupt request\n"); -	show_regs (pt_regs); -	bad_mode (); -} - -  int interrupt_init (void)  {  	/* nothing happens here - we don't setup any IRQs */ diff --git a/lib_arm/Makefile b/lib_arm/Makefile index 037c475f8..bfd5b0e6f 100644 --- a/lib_arm/Makefile +++ b/lib_arm/Makefile @@ -28,7 +28,7 @@ LIB	= $(obj)lib$(ARCH).a  SOBJS	= _ashldi3.o _ashrdi3.o _divsi3.o _modsi3.o _udivsi3.o _umodsi3.o  COBJS	= armlinux.o board.o \ -	  cache.o div0.o +	  cache.o div0.o interrupts.o  SRCS 	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)  OBJS	:= $(addprefix $(obj),$(SOBJS) $(COBJS)) diff --git a/cpu/arm_intcm/interrupts.c b/lib_arm/interrupts.c index 176317691..4dafbfaab 100644 --- a/cpu/arm_intcm/interrupts.c +++ b/lib_arm/interrupts.c @@ -26,7 +26,7 @@   *   * This program is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the   * GNU General Public License for more details.   *   * You should have received a copy of the GNU General Public License @@ -38,23 +38,6 @@  #include <common.h>  #include <asm/proc-armv/ptrace.h> -#ifndef CONFIG_INTEGRATOR -/* Only to be used for integrator/AP or /CP */ -/* Allows U-Boot to be used with any ARM supplied core module (CM), - * provided the ARM boot monitor, or similar software, - * runs first to set up the platform e.g. map writeable memory to 0x00000000 - * - see Integrator User Guides - * Versatile has a supported cpu - arm926ejs - * Some integrator CMs cpus are supported - * CM926EJ-S, CM946E-S - * For platforms with supported cpus U-Boot can be used as the sole boot - * monitor/loader - it will configure the platform itself - * Also U-Boot may be faster/smaller in those cases since specific - * qualities of the cpu and/or CM can be used e.g i and/or d caches etc. - */ -#endif -extern void reset_cpu(ulong addr); -  #ifdef CONFIG_USE_IRQ  /* enable IRQ interrupts */  void enable_interrupts (void) @@ -118,15 +101,15 @@ void show_regs (struct pt_regs *regs)  	flags = condition_codes (regs); -	printf ("pc : [<%08lx>]    lr : [<%08lx>]\n" -		"sp : %08lx  ip : %08lx  fp : %08lx\n", +	printf ("pc : [<%08lx>]	   lr : [<%08lx>]\n" +		"sp : %08lx  ip : %08lx	 fp : %08lx\n",  		instruction_pointer (regs),  		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); -	printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n", +	printf ("r10: %08lx  r9 : %08lx	 r8 : %08lx\n",  		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); -	printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n", +	printf ("r7 : %08lx  r6 : %08lx	 r5 : %08lx  r4 : %08lx\n",  		regs->ARM_r7, regs->ARM_r6, regs->ARM_r5, regs->ARM_r4); -	printf ("r3 : %08lx  r2 : %08lx  r1 : %08lx  r0 : %08lx\n", +	printf ("r3 : %08lx  r2 : %08lx	 r1 : %08lx  r0 : %08lx\n",  		regs->ARM_r3, regs->ARM_r2, regs->ARM_r1, regs->ARM_r0);  	printf ("Flags: %c%c%c%c",  		flags & CC_N_BIT ? 'N' : 'n', @@ -181,12 +164,11 @@ void do_fiq (struct pt_regs *pt_regs)  	bad_mode ();  } +#ifndef CONFIG_USE_IRQ  void do_irq (struct pt_regs *pt_regs)  {  	printf ("interrupt request\n");  	show_regs (pt_regs);  	bad_mode ();  } - -/* The timer functionality is supplied by the Integrator board */ -/* - see board/integrator<>.c */ +#endif |