diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-13 13:08:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-13 13:08:43 -0400 |
commit | 54cebc68c81eacac41a21bdfe99dc889d3882c60 (patch) | |
tree | da1d3872c6ddf208768e784bd1ea09054a81462d /arch/blackfin/kernel/cplb-mpu/cplbmgr.c | |
parent | fffdedef691a0f6fa7ca1fc0a2a508cbb49def69 (diff) | |
parent | 71de1f8a6365ea65346881e526132563d93696d1 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (60 commits)
Blackfin arch: make sure we include the fix for SPORT hysteresis when reprogramming clocks
Blackfin arch: Fix bogus str_ident check in gpio code
Blackfin arch: AD7879 Touchscreen driver
Blackfin arch: introducing bfin_addr_dcachable
Blackfin arch: fix a typo in comments
Blackfin arch: Remove useless head file
Blackfin arch: make sure L2 start and length are always defined (fixes building on BF542)
Blackfin arch: use the Blackfin on-chip ROM to do software reset when possible
Blackfin arch: update anomaly headers to match the latest sheet
Blackfin arch: bfin_reset() is an internal reboot function ... everyone should go through machine_restart()
Blackfin arch: print out error/warning if you are running on the incorrect CPU type
Blackfin arch: remove non-bf54x ifdef logic since this file is only compiled on bf54x parts
Blackfin arch: update board defconfigs
Blackfin arch: Add optional verbose debug
Blackfin arch: emulate a TTY over the EMUDAT/JTAG interface
Blackfin arch: have is_user_addr_valid() check for overflows (like when address is -1)
Blackfin arch: ptrace - fix off-by-one check on end of memory regions
Blackfin arch: Enable framebuffer support for the BF526-EZkit TFT LCD display
Blackfin arch: flash memory map and dm9000 resources updating
Blackfin arch: early prink code still use uart core console functions to parse and set configure option string
...
Diffstat (limited to 'arch/blackfin/kernel/cplb-mpu/cplbmgr.c')
-rw-r--r-- | arch/blackfin/kernel/cplb-mpu/cplbmgr.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c index 99f2831e2964..5094677fd09e 100644 --- a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c +++ b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c | |||
@@ -322,9 +322,11 @@ int cplb_hdr(int seqstat, struct pt_regs *regs) | |||
322 | void flush_switched_cplbs(void) | 322 | void flush_switched_cplbs(void) |
323 | { | 323 | { |
324 | int i; | 324 | int i; |
325 | unsigned long flags; | ||
325 | 326 | ||
326 | nr_cplb_flush++; | 327 | nr_cplb_flush++; |
327 | 328 | ||
329 | local_irq_save(flags); | ||
328 | disable_icplb(); | 330 | disable_icplb(); |
329 | for (i = first_switched_icplb; i < MAX_CPLBS; i++) { | 331 | for (i = first_switched_icplb; i < MAX_CPLBS; i++) { |
330 | icplb_tbl[i].data = 0; | 332 | icplb_tbl[i].data = 0; |
@@ -338,6 +340,8 @@ void flush_switched_cplbs(void) | |||
338 | bfin_write32(DCPLB_DATA0 + i * 4, 0); | 340 | bfin_write32(DCPLB_DATA0 + i * 4, 0); |
339 | } | 341 | } |
340 | enable_dcplb(); | 342 | enable_dcplb(); |
343 | local_irq_restore(flags); | ||
344 | |||
341 | } | 345 | } |
342 | 346 | ||
343 | void set_mask_dcplbs(unsigned long *masks) | 347 | void set_mask_dcplbs(unsigned long *masks) |
@@ -345,10 +349,15 @@ void set_mask_dcplbs(unsigned long *masks) | |||
345 | int i; | 349 | int i; |
346 | unsigned long addr = (unsigned long)masks; | 350 | unsigned long addr = (unsigned long)masks; |
347 | unsigned long d_data; | 351 | unsigned long d_data; |
348 | current_rwx_mask = masks; | 352 | unsigned long flags; |
349 | 353 | ||
350 | if (!masks) | 354 | if (!masks) { |
355 | current_rwx_mask = masks; | ||
351 | return; | 356 | return; |
357 | } | ||
358 | |||
359 | local_irq_save(flags); | ||
360 | current_rwx_mask = masks; | ||
352 | 361 | ||
353 | d_data = CPLB_SUPV_WR | CPLB_VALID | CPLB_DIRTY | PAGE_SIZE_4KB; | 362 | d_data = CPLB_SUPV_WR | CPLB_VALID | CPLB_DIRTY | PAGE_SIZE_4KB; |
354 | #ifdef CONFIG_BFIN_DCACHE | 363 | #ifdef CONFIG_BFIN_DCACHE |
@@ -367,4 +376,5 @@ void set_mask_dcplbs(unsigned long *masks) | |||
367 | addr += PAGE_SIZE; | 376 | addr += PAGE_SIZE; |
368 | } | 377 | } |
369 | enable_dcplb(); | 378 | enable_dcplb(); |
379 | local_irq_restore(flags); | ||
370 | } | 380 | } |