diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-05 11:59:22 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-05 11:59:22 -0400 |
| commit | bbc4fd12a635492ad9d12bb418124fa2d5f0d734 (patch) | |
| tree | fe245d350db180d499a9e9d6dc84bbb308f33dc2 | |
| parent | 673b864fd76a29031aa0b4b08fc80886d527b3b7 (diff) | |
| parent | 2d5973cb5ac5d04662f86e19a06a4c52fa4c4ae3 (diff) | |
Merge branch 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze
* 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze: (49 commits)
microblaze: Add KGDB support
microblaze: Support brki rX, 0x18 for user application debugging
microblaze: Remove nop after MSRCLR/SET, MTS, MFS instructions
microblaze: Simplify syscall rutine
microblaze: Move PT_MODE saving to delay slot
microblaze: Fix _interrupt function
microblaze: Fix _user_exception function
microblaze: Put together addik instructions
microblaze: Use delay slot in syscall macros
microblaze: Save kernel mode in delay slot
microblaze: Do not mix register saving and mode setting
microblaze: Move SAVE_STATE upward
microblaze: entry.S: Macro optimization
microblaze: Optimize hw exception rutine
microblaze: Implement clear_ums macro and fix SAVE_STATE macro
microblaze: Remove additional setup for kernel_mode
microblaze: Optimize SAVE_STATE macro
microblaze: Remove additional loading
microblaze: Completely remove working with R11 register
microblaze: Do not setup BIP in _debug_exception
...
34 files changed, 977 insertions, 544 deletions
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index 505a08592423..be3855250db6 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig | |||
| @@ -14,6 +14,7 @@ config MICROBLAZE | |||
| 14 | select USB_ARCH_HAS_EHCI | 14 | select USB_ARCH_HAS_EHCI |
| 15 | select ARCH_WANT_OPTIONAL_GPIOLIB | 15 | select ARCH_WANT_OPTIONAL_GPIOLIB |
| 16 | select HAVE_OPROFILE | 16 | select HAVE_OPROFILE |
| 17 | select HAVE_ARCH_KGDB | ||
| 17 | select HAVE_DMA_ATTRS | 18 | select HAVE_DMA_ATTRS |
| 18 | select HAVE_DMA_API_DEBUG | 19 | select HAVE_DMA_API_DEBUG |
| 19 | select TRACING_SUPPORT | 20 | select TRACING_SUPPORT |
| @@ -223,6 +224,36 @@ config TASK_SIZE | |||
| 223 | hex "Size of user task space" if TASK_SIZE_BOOL | 224 | hex "Size of user task space" if TASK_SIZE_BOOL |
| 224 | default "0x80000000" | 225 | default "0x80000000" |
| 225 | 226 | ||
| 227 | choice | ||
| 228 | prompt "Page size" | ||
| 229 | default MICROBLAZE_4K_PAGES | ||
| 230 | depends on ADVANCED_OPTIONS && !MMU | ||
| 231 | help | ||
| 232 | Select the kernel logical page size. Increasing the page size | ||
| 233 | will reduce software overhead at each page boundary, allow | ||
| 234 | hardware prefetch mechanisms to be more effective, and allow | ||
| 235 | larger dma transfers increasing IO efficiency and reducing | ||
| 236 | overhead. However the utilization of memory will increase. | ||
| 237 | For example, each cached file will using a multiple of the | ||
| 238 | page size to hold its contents and the difference between the | ||
| 239 | end of file and the end of page is wasted. | ||
| 240 | |||
| 241 | If unsure, choose 4K_PAGES. | ||
| 242 | |||
| 243 | config MICROBLAZE_4K_PAGES | ||
| 244 | bool "4k page size" | ||
| 245 | |||
| 246 | config MICROBLAZE_8K_PAGES | ||
| 247 | bool "8k page size" | ||
| 248 | |||
| 249 | config MICROBLAZE_16K_PAGES | ||
| 250 | bool "16k page size" | ||
| 251 | |||
| 252 | config MICROBLAZE_32K_PAGES | ||
| 253 | bool "32k page size" | ||
| 254 | |||
| 255 | endchoice | ||
| 256 | |||
| 226 | endmenu | 257 | endmenu |
| 227 | 258 | ||
| 228 | source "mm/Kconfig" | 259 | source "mm/Kconfig" |
diff --git a/arch/microblaze/Kconfig.debug b/arch/microblaze/Kconfig.debug index 9dc708a7f700..e6e5e0da28c3 100644 --- a/arch/microblaze/Kconfig.debug +++ b/arch/microblaze/Kconfig.debug | |||
| @@ -10,6 +10,7 @@ source "lib/Kconfig.debug" | |||
| 10 | 10 | ||
| 11 | config EARLY_PRINTK | 11 | config EARLY_PRINTK |
| 12 | bool "Early printk function for kernel" | 12 | bool "Early printk function for kernel" |
| 13 | depends on SERIAL_UARTLITE_CONSOLE | ||
| 13 | default n | 14 | default n |
| 14 | help | 15 | help |
| 15 | This option turns on/off early printk messages to console. | 16 | This option turns on/off early printk messages to console. |
diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile index 57f50c2371c6..be01d78750d9 100644 --- a/arch/microblaze/boot/Makefile +++ b/arch/microblaze/boot/Makefile | |||
| @@ -35,13 +35,14 @@ quiet_cmd_cp = CP $< $@$2 | |||
| 35 | cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false) | 35 | cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false) |
| 36 | 36 | ||
| 37 | quiet_cmd_strip = STRIP $@ | 37 | quiet_cmd_strip = STRIP $@ |
| 38 | cmd_strip = $(STRIP) -K _start -K _end -K __log_buf -K _fdt_start vmlinux -o $@ | 38 | cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \ |
| 39 | -K _fdt_start vmlinux -o $@ | ||
| 39 | 40 | ||
| 40 | quiet_cmd_uimage = UIMAGE $@.ub | 41 | quiet_cmd_uimage = UIMAGE $@.ub |
| 41 | cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A microblaze -O linux -T kernel \ | 42 | cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A microblaze -O linux -T kernel \ |
| 42 | -C none -n 'Linux-$(KERNELRELEASE)' \ | 43 | -C none -n 'Linux-$(KERNELRELEASE)' \ |
| 43 | -a $(CONFIG_KERNEL_BASE_ADDR) -e $(CONFIG_KERNEL_BASE_ADDR) \ | 44 | -a $(CONFIG_KERNEL_BASE_ADDR) -e $(CONFIG_KERNEL_BASE_ADDR) \ |
| 44 | -d $@ $@.ub | 45 | -d $@ $@.ub |
| 45 | 46 | ||
| 46 | $(obj)/simpleImage.%: vmlinux FORCE | 47 | $(obj)/simpleImage.%: vmlinux FORCE |
| 47 | $(call if_changed,cp,.unstrip) | 48 | $(call if_changed,cp,.unstrip) |
diff --git a/arch/microblaze/include/asm/cacheflush.h b/arch/microblaze/include/asm/cacheflush.h index a6edd356cd08..7ebd955460d9 100644 --- a/arch/microblaze/include/asm/cacheflush.h +++ b/arch/microblaze/include/asm/cacheflush.h | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | 17 | ||
| 18 | /* Somebody depends on this; sigh... */ | 18 | /* Somebody depends on this; sigh... */ |
| 19 | #include <linux/mm.h> | 19 | #include <linux/mm.h> |
| 20 | #include <linux/io.h> | ||
| 20 | 21 | ||
| 21 | /* Look at Documentation/cachetlb.txt */ | 22 | /* Look at Documentation/cachetlb.txt */ |
| 22 | 23 | ||
| @@ -60,7 +61,6 @@ void microblaze_cache_init(void); | |||
| 60 | #define invalidate_icache() mbc->iin(); | 61 | #define invalidate_icache() mbc->iin(); |
| 61 | #define invalidate_icache_range(start, end) mbc->iinr(start, end); | 62 | #define invalidate_icache_range(start, end) mbc->iinr(start, end); |
| 62 | 63 | ||
| 63 | |||
| 64 | #define flush_icache_user_range(vma, pg, adr, len) flush_icache(); | 64 | #define flush_icache_user_range(vma, pg, adr, len) flush_icache(); |
| 65 | #define flush_icache_page(vma, pg) do { } while (0) | 65 | #define flush_icache_page(vma, pg) do { } while (0) |
| 66 | 66 | ||
| @@ -72,9 +72,15 @@ void microblaze_cache_init(void); | |||
| 72 | #define flush_dcache() mbc->dfl(); | 72 | #define flush_dcache() mbc->dfl(); |
| 73 | #define flush_dcache_range(start, end) mbc->dflr(start, end); | 73 | #define flush_dcache_range(start, end) mbc->dflr(start, end); |
| 74 | 74 | ||
| 75 | #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 0 | 75 | #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1 |
| 76 | /* D-cache aliasing problem can't happen - cache is between MMU and ram */ | 76 | /* MS: We have to implement it because of rootfs-jffs2 issue on WB */ |
| 77 | #define flush_dcache_page(page) do { } while (0) | 77 | #define flush_dcache_page(page) \ |
| 78 | do { \ | ||
| 79 | unsigned long addr = (unsigned long) page_address(page); /* virtual */ \ | ||
| 80 | addr = (u32)virt_to_phys((void *)addr); \ | ||
| 81 | flush_dcache_range((unsigned) (addr), (unsigned) (addr) + PAGE_SIZE); \ | ||
| 82 | } while (0); | ||
| 83 | |||
| 78 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | 84 | #define flush_dcache_mmap_lock(mapping) do { } while (0) |
| 79 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | 85 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) |
| 80 | |||
