From b188ffe876382ecc009ceb4fe033fd6ec7ba4ede Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Tue, 28 Dec 2004 07:49:43 +0000 Subject: Fix build with SMP disabled and preemption enabled. Signed-off-by: Ralf Baechle --- arch/mips/kernel/gdb-stub.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'arch/mips/kernel/gdb-stub.c') diff --git a/arch/mips/kernel/gdb-stub.c b/arch/mips/kernel/gdb-stub.c index d3fd1ab14274..7c46b336c7db 100644 --- a/arch/mips/kernel/gdb-stub.c +++ b/arch/mips/kernel/gdb-stub.c @@ -637,15 +637,18 @@ static struct gdb_bp_save async_bp; * and only one can be active at a time. */ extern spinlock_t smp_call_lock; + void set_async_breakpoint(unsigned long *epc) { /* skip breaking into userland */ if ((*epc & 0x80000000) == 0) return; +#ifdef CONFIG_SMP /* avoid deadlock if someone is make IPC */ if (spin_is_locked(&smp_call_lock)) return; +#endif async_bp.addr = *epc; *epc = (unsigned long)async_breakpoint; -- cgit v1.2.3 From a0c3a5b5a84df11cf6a44fc04cb6f7c0525123a8 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Thu, 14 Jul 2005 07:39:46 +0000 Subject: Prevent gcc from optimizing a few functions away completly. Signed-off-by: Ralf Baechle --- arch/mips/kernel/gdb-stub.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arch/mips/kernel/gdb-stub.c') diff --git a/arch/mips/kernel/gdb-stub.c b/arch/mips/kernel/gdb-stub.c index 7c46b336c7db..ba0afb4a649c 100644 --- a/arch/mips/kernel/gdb-stub.c +++ b/arch/mips/kernel/gdb-stub.c @@ -1039,12 +1039,12 @@ void adel(void) * malloc is needed by gdb client in "call func()", even a private one * will make gdb happy */ -static void *malloc(size_t size) +static void * __attribute_used__ malloc(size_t size) { return kmalloc(size, GFP_ATOMIC); } -static void free(void *where) +static void __attribute_used__ free (void *where) { kfree(where); } -- cgit v1.2.3 From f8bb3af924211b0e6ee66dc0d3bcb4a66ba59af4 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Mon, 3 Oct 2005 13:30:57 +0100 Subject: Make kgdb_wait static. Nothing outside gdb-stub.c uses kgdb_wait, so change it's definition to static. Signed-off-by: Ralf Baechle --- arch/mips/kernel/gdb-stub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arch/mips/kernel/gdb-stub.c') diff --git a/arch/mips/kernel/gdb-stub.c b/arch/mips/kernel/gdb-stub.c index ba0afb4a649c..3af94207f2bc 100644 --- a/arch/mips/kernel/gdb-stub.c +++ b/arch/mips/kernel/gdb-stub.c @@ -654,7 +654,7 @@ void set_async_breakpoint(unsigned long *epc) *epc = (unsigned long)async_breakpoint; } -void kgdb_wait(void *arg) +static void kgdb_wait(void *arg) { unsigned flags; int cpu = smp_processor_id(); -- cgit v1.2.3 From 57468af3267bfb89391f9c607a9637e86e55d299 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Mon, 3 Oct 2005 13:40:26 +0100 Subject: Define and initialize kdb_lock using DEFINE_SPINLOCK. Convert kgdb_cpulock into a raw_spinlock_t. SPIN_LOCK_UNLOCKED is deprecated and it's replacement DEFINE_SPINLOCK is not suitable for arrays of spinlocks. Signed-off-by: Ralf Baechle --- arch/mips/kernel/gdb-stub.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'arch/mips/kernel/gdb-stub.c') diff --git a/arch/mips/kernel/gdb-stub.c b/arch/mips/kernel/gdb-stub.c index 3af94207f2bc..96d18c43dca0 100644 --- a/arch/mips/kernel/gdb-stub.c +++ b/arch/mips/kernel/gdb-stub.c @@ -176,8 +176,10 @@ int kgdb_enabled; /* * spin locks for smp case */ -static spinlock_t kgdb_lock = SPIN_LOCK_UNLOCKED; -static spinlock_t kgdb_cpulock[NR_CPUS] = { [0 ... NR_CPUS-1] = SPIN_LOCK_UNLOCKED}; +static DEFINE_SPINLOCK(kgdb_lock); +static raw_spinlock_t kgdb_cpulock[NR_CPUS] = { + [0 ... NR_CPUS-1] = __RAW_SPIN_LOCK_UNLOCKED; +}; /* * BUFMAX defines the maximum number of characters in inbound/outbound buffers @@ -661,8 +663,8 @@ static void kgdb_wait(void *arg) local_irq_save(flags); - spin_lock(&kgdb_cpulock[cpu]); - spin_unlock(&kgdb_cpulock[cpu]); + __raw_spin_lock(&kgdb_cpulock[cpu]); + __raw_spin_unlock(&kgdb_cpulock[cpu]); local_irq_restore(flags); } @@ -710,7 +712,7 @@ void handle_exception (struct gdb_regs *regs) * acquire the CPU spinlocks */ for (i = num_online_cpus()-1; i >= 0; i--) - if (spin_trylock(&kgdb_cpulock[i]) == 0) + if (__raw_spin_trylock(&kgdb_cpulock[i]) == 0) panic("kgdb: couldn't get cpulock %d\n", i); /* @@ -985,7 +987,7 @@ finish_kgdb: exit_kgdb_exception: /* release locks so other CPUs can go */ for (i = num_online_cpus()-1; i >= 0; i--) - spin_unlock(&kgdb_cpulock[i]); + __raw_spin_unlock(&kgdb_cpulock[i]); spin_unlock(&kgdb_lock); __flush_cache_all(); -- cgit v1.2.3