forked from luck/tmp_suning_uos_patched
sh: kgdb section mismatches and tidying.
The kgdb console setup was callable from a left-over deferred initialization path, which in turn depends on __init symbols. Since the deferred initialization was removed some time ago, kill off the rest of those remnants and move kgdb_init() and friends to __init. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
e1fb4552ac
commit
a90f354709
@ -150,13 +150,6 @@ struct kgdb_regs trap_registers;
|
||||
char kgdb_in_gdb_mode;
|
||||
char in_nmi; /* Set during NMI to prevent reentry */
|
||||
int kgdb_nofault; /* Boolean to ignore bus errs (i.e. in GDB) */
|
||||
int kgdb_enabled = 1; /* Default to enabled, cmdline can disable */
|
||||
|
||||
/* Exposed for user access */
|
||||
struct task_struct *kgdb_current;
|
||||
unsigned int kgdb_g_imask;
|
||||
int kgdb_trapa_val;
|
||||
int kgdb_excode;
|
||||
|
||||
/* Default values for SCI (can override via kernel args in setup.c) */
|
||||
#ifndef CONFIG_KGDB_DEFPORT
|
||||
@ -640,7 +633,6 @@ static void do_single_step(void)
|
||||
|
||||
/* Flush and return */
|
||||
kgdb_flush_icache_range((long) addr, (long) addr + 2);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Undo a single step */
|
||||
@ -815,14 +807,10 @@ static void set_regs_msg(void)
|
||||
/*
|
||||
* Bring up the ports..
|
||||
*/
|
||||
static int kgdb_serial_setup(void)
|
||||
static int __init kgdb_serial_setup(void)
|
||||
{
|
||||
extern int kgdb_console_setup(struct console *co, char *options);
|
||||
struct console dummy;
|
||||
|
||||
kgdb_console_setup(&dummy, 0);
|
||||
|
||||
return 0;
|
||||
return kgdb_console_setup(&dummy, 0);
|
||||
}
|
||||
#else
|
||||
#define kgdb_serial_setup() 0
|
||||
@ -833,22 +821,6 @@ static void kgdb_command_loop(const int excep_code, const int trapa_value)
|
||||
{
|
||||
int sigval;
|
||||
|
||||
if (excep_code == NMI_VEC) {
|
||||
#ifndef CONFIG_KGDB_NMI
|
||||
printk(KERN_NOTICE "KGDB: Ignoring unexpected NMI?\n");
|
||||
return;
|
||||
#else /* CONFIG_KGDB_NMI */
|
||||
if (!kgdb_enabled) {
|
||||
kgdb_enabled = 1;
|
||||
kgdb_init();
|
||||
}
|
||||
#endif /* CONFIG_KGDB_NMI */
|
||||
}
|
||||
|
||||
/* Ignore if we're disabled */
|
||||
if (!kgdb_enabled)
|
||||
return;
|
||||
|
||||
/* Enter GDB mode (e.g. after detach) */
|
||||
if (!kgdb_in_gdb_mode) {
|
||||
/* Do serial setup, notify user, issue preemptive ack */
|
||||
@ -959,18 +931,10 @@ static void handle_exception(struct pt_regs *regs)
|
||||
|
||||
/* Get excode for command loop call, user access */
|
||||
asm("stc r2_bank, %0":"=r"(excep_code));
|
||||
kgdb_excode = excep_code;
|
||||
|
||||
/* Other interesting environment items for reference */
|
||||
asm("stc r6_bank, %0":"=r"(kgdb_g_imask));
|
||||
kgdb_current = current;
|
||||
kgdb_trapa_val = trapa_value;
|
||||
|
||||
/* Act on the exception */
|
||||
kgdb_command_loop(excep_code, trapa_value);
|
||||
|
||||
kgdb_current = NULL;
|
||||
|
||||
/* Copy back the (maybe modified) registers */
|
||||
for (count = 0; count < 16; count++)
|
||||
regs->regs[count] = trap_registers.regs[count];
|
||||
@ -994,11 +958,8 @@ asmlinkage void kgdb_handle_exception(unsigned long r4, unsigned long r5,
|
||||
}
|
||||
|
||||
/* Initialise the KGDB data structures and serial configuration */
|
||||
int kgdb_init(void)
|
||||
int __init kgdb_init(void)
|
||||
{
|
||||
if (!kgdb_enabled)
|
||||
return 1;
|
||||
|
||||
in_nmi = 0;
|
||||
kgdb_nofault = 0;
|
||||
stepped_opcode = 0;
|
||||
|
@ -19,8 +19,6 @@
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
struct console;
|
||||
|
||||
/* Same as pt_regs but has vbr in place of syscall_nr */
|
||||
struct kgdb_regs {
|
||||
unsigned long regs[16];
|
||||
@ -35,10 +33,7 @@ struct kgdb_regs {
|
||||
|
||||
/* State info */
|
||||
extern char kgdb_in_gdb_mode;
|
||||
extern int kgdb_done_init;
|
||||
extern int kgdb_enabled;
|
||||
extern int kgdb_nofault; /* Ignore bus errors (in gdb mem access) */
|
||||
extern int kgdb_halt; /* Execute initial breakpoint at startup */
|
||||
extern char in_nmi; /* Debounce flag to prevent NMI reentry*/
|
||||
|
||||
/* SCI */
|
||||
@ -59,6 +54,7 @@ extern kgdb_debug_hook_t *kgdb_debug_hook;
|
||||
extern kgdb_bus_error_hook_t *kgdb_bus_err_hook;
|
||||
|
||||
/* Console */
|
||||
struct console;
|
||||
void kgdb_console_write(struct console *co, const char *s, unsigned count);
|
||||
extern int kgdb_console_setup(struct console *, char *);
|
||||
|
||||
@ -69,11 +65,7 @@ extern void longjmp(jmp_buf __jmpb, int __retval);
|
||||
extern int setjmp(jmp_buf __jmpb);
|
||||
|
||||
/* Forced breakpoint */
|
||||
#define breakpoint() \
|
||||
do { \
|
||||
if (kgdb_enabled) \
|
||||
__asm__ __volatile__("trapa #0x3c"); \
|
||||
} while (0)
|
||||
#define breakpoint() __asm__ __volatile__("trapa #0x3c")
|
||||
|
||||
/* KGDB should be able to flush all kernel text space */
|
||||
#if defined(CONFIG_CPU_SH4)
|
||||
|
Loading…
Reference in New Issue
Block a user