diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-10 17:06:08 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-10 17:06:08 -0800 |
commit | 0be8c8bd1de21d75ef14eb6af35b664f70a35746 (patch) | |
tree | fac1d514dcdb4146d4504f965a7f394c998c6b82 /arch/blackfin/kernel | |
parent | e54be894eae10eca9892e965cc9532f5d5a11767 (diff) | |
parent | a780c6e86851c6479851186c5d5b9fb2b201bec7 (diff) | |
download | kernel_goldelico_gta04-0be8c8bd1de21d75ef14eb6af35b664f70a35746.zip kernel_goldelico_gta04-0be8c8bd1de21d75ef14eb6af35b664f70a35746.tar.gz kernel_goldelico_gta04-0be8c8bd1de21d75ef14eb6af35b664f70a35746.tar.bz2 |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (52 commits)
Blackfin: encode cpu-rev into uImage name
Blackfin: bf54x: don't ack GPIO ints when unmasking them
Blackfin: sram_free_with_lsl: do not ignore return value of sram_free
Blackfin: boards: add missing "static" to peripheral lists
Blackfin: DNP5370: new board port
Blackfin: bf518f-ezbrd: fix dsa resources
Blackfin: move "-m elf32bfin" to general LDFLAGS
Blackfin: kgdb_test: make sure to initialize num2
Blackfin: kgdb: disable preempt schedule when running single step in kgdb
Blackfin: kgdb: disable interrupt when single stepping in ADEOS
Blackfin: SMP: kgdb: apply anomaly 257 work around
Blackfin: fix building IPIPE code when XIP is enabled
Blackfin: SMP: kgdb: flush core internal write buffer before flushinv
Blackfin: sport_uart resources: remove unused secondary RX/TX pins
Blackfin: tll6527m: fix spelling in unused code (struct name)
Blackfin: bf527-ezkit: add adau1373 chip address
Blackfin: no-mpu: fix masking of small uncached dma region
Blackfin: pm: drop irq save/restore in standby and suspend to mem callback
MAINTAINERS: update Analog Devices support info
Blackfin: dpmc.h: pull in new pll.h
...
Diffstat (limited to 'arch/blackfin/kernel')
-rw-r--r-- | arch/blackfin/kernel/cplb-nompu/cplbinit.c | 2 | ||||
-rw-r--r-- | arch/blackfin/kernel/kgdb.c | 26 | ||||
-rw-r--r-- | arch/blackfin/kernel/kgdb_test.c | 4 |
3 files changed, 31 insertions, 1 deletions
diff --git a/arch/blackfin/kernel/cplb-nompu/cplbinit.c b/arch/blackfin/kernel/cplb-nompu/cplbinit.c index bfe75af..886e000 100644 --- a/arch/blackfin/kernel/cplb-nompu/cplbinit.c +++ b/arch/blackfin/kernel/cplb-nompu/cplbinit.c @@ -116,7 +116,7 @@ void __init generate_cplb_tables_all(void) ((_ramend - uncached_end) >= 1 * 1024 * 1024)) dcplb_bounds[i_d].eaddr = uncached_end; else - dcplb_bounds[i_d].eaddr = uncached_end & ~(1 * 1024 * 1024); + dcplb_bounds[i_d].eaddr = uncached_end & ~(1 * 1024 * 1024 - 1); dcplb_bounds[i_d++].data = SDRAM_DGENERIC; /* DMA uncached region. */ if (DMA_UNCACHED_REGION) { diff --git a/arch/blackfin/kernel/kgdb.c b/arch/blackfin/kernel/kgdb.c index edae461..eb92592 100644 --- a/arch/blackfin/kernel/kgdb.c +++ b/arch/blackfin/kernel/kgdb.c @@ -345,6 +345,23 @@ void kgdb_roundup_cpu(int cpu, unsigned long flags) } #endif +#ifdef CONFIG_IPIPE +static unsigned long kgdb_arch_imask; +#endif + +void kgdb_post_primary_code(struct pt_regs *regs, int e_vector, int err_code) +{ + if (kgdb_single_step) + preempt_enable(); + +#ifdef CONFIG_IPIPE + if (kgdb_arch_imask) { + cpu_pda[raw_smp_processor_id()].ex_imask = kgdb_arch_imask; + kgdb_arch_imask = 0; + } +#endif +} + int kgdb_arch_handle_exception(int vector, int signo, int err_code, char *remcom_in_buffer, char *remcom_out_buffer, @@ -388,6 +405,12 @@ int kgdb_arch_handle_exception(int vector, int signo, * kgdb_single_step > 0 means in single step mode */ kgdb_single_step = i + 1; + + preempt_disable(); +#ifdef CONFIG_IPIPE + kgdb_arch_imask = cpu_pda[raw_smp_processor_id()].ex_imask; + cpu_pda[raw_smp_processor_id()].ex_imask = 0; +#endif } bfin_correct_hw_break(); @@ -448,6 +471,9 @@ void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long ip) int kgdb_arch_init(void) { kgdb_single_step = 0; +#ifdef CONFIG_IPIPE + kgdb_arch_imask = 0; +#endif bfin_remove_all_hw_break(); return 0; diff --git a/arch/blackfin/kernel/kgdb_test.c b/arch/blackfin/kernel/kgdb_test.c index 08c0236..2a6e9db 100644 --- a/arch/blackfin/kernel/kgdb_test.c +++ b/arch/blackfin/kernel/kgdb_test.c @@ -95,6 +95,10 @@ static int __init kgdbtest_init(void) { struct proc_dir_entry *entry; +#if L2_LENGTH + num2 = 0; +#endif + entry = proc_create("kgdbtest", 0, NULL, &kgdb_test_proc_fops); if (entry == NULL) return -ENOMEM; |