Commit 35f6cd4a authored by Paul Mundt's avatar Paul Mundt

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/mfleming/sh-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/mfleming/sh-2.6:
  sh: Use correct mask when comparing PMB DATA array values
  sh: Do not try merging two 128MB PMB mappings
  sh: Fix zImage load address when CONFIG_32BIT=y
  sh: Fix address to decompress at when CONFIG_32BIT=y
  sh: Assembly friendly __pa and __va definitions
parents 5bac942d 035ca59f
...@@ -14,10 +14,16 @@ OBJECTS = $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/cache.o ...@@ -14,10 +14,16 @@ OBJECTS = $(obj)/head_$(BITS).o $(obj)/misc.o $(obj)/cache.o
# #
# IMAGE_OFFSET is the load offset of the compression loader # IMAGE_OFFSET is the load offset of the compression loader
# #
ifeq ($(CONFIG_32BIT),y)
IMAGE_OFFSET := $(shell /bin/bash -c 'printf "0x%08x" \
$$[$(CONFIG_MEMORY_START) + \
$(CONFIG_BOOT_LINK_OFFSET)]')
else
IMAGE_OFFSET := $(shell /bin/bash -c 'printf "0x%08x" \ IMAGE_OFFSET := $(shell /bin/bash -c 'printf "0x%08x" \
$$[$(CONFIG_PAGE_OFFSET) + \ $$[$(CONFIG_PAGE_OFFSET) + \
$(KERNEL_MEMORY) + \ $(KERNEL_MEMORY) + \
$(CONFIG_BOOT_LINK_OFFSET)]') $(CONFIG_BOOT_LINK_OFFSET)]')
endif
LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
......
...@@ -97,7 +97,11 @@ init_stack_addr: ...@@ -97,7 +97,11 @@ init_stack_addr:
decompress_kernel_addr: decompress_kernel_addr:
.long decompress_kernel .long decompress_kernel
kernel_start_addr: kernel_start_addr:
#ifdef CONFIG_32BIT
.long ___pa(_text+PAGE_SIZE)
#else
.long _text+PAGE_SIZE .long _text+PAGE_SIZE
#endif
.align 9 .align 9
fake_headers_as_bzImage: fake_headers_as_bzImage:
......
...@@ -128,13 +128,18 @@ typedef struct page *pgtable_t; ...@@ -128,13 +128,18 @@ typedef struct page *pgtable_t;
* added or subtracted as required. * added or subtracted as required.
*/ */
#ifdef CONFIG_PMB #ifdef CONFIG_PMB
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET+__MEMORY_START) #define ___pa(x) ((x)-PAGE_OFFSET+__MEMORY_START)
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET-__MEMORY_START)) #define ___va(x) ((x)+PAGE_OFFSET-__MEMORY_START)
#else #else
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) #define ___pa(x) ((x)-PAGE_OFFSET)
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) #define ___va(x) ((x)+PAGE_OFFSET)
#endif #endif
#ifndef __ASSEMBLY__
#define __pa(x) ___pa((unsigned long)x)
#define __va(x) (void *)___va((unsigned long)x)
#endif /* !__ASSEMBLY__ */
#ifdef CONFIG_UNCACHED_MAPPING #ifdef CONFIG_UNCACHED_MAPPING
#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + uncached_start) #define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + uncached_start)
#define CAC_ADDR(addr) ((addr) - uncached_start + PAGE_OFFSET) #define CAC_ADDR(addr) ((addr) - uncached_start + PAGE_OFFSET)
......
...@@ -131,6 +131,7 @@ ENTRY(_stext) ...@@ -131,6 +131,7 @@ ENTRY(_stext)
* r8 = scratch register * r8 = scratch register
* r9 = scratch register * r9 = scratch register
* r10 = number of PMB entries we've setup * r10 = number of PMB entries we've setup
* r11 = scratch register
*/ */
mov.l .LMMUCR, r1 /* Flush the TLB */ mov.l .LMMUCR, r1 /* Flush the TLB */
...@@ -167,8 +168,9 @@ ENTRY(_stext) ...@@ -167,8 +168,9 @@ ENTRY(_stext)
.Lvalidate_existing_mappings: .Lvalidate_existing_mappings:
mov.l .LPMB_DATA_MASK, r11
mov.l @r7, r8 mov.l @r7, r8
and r0, r8 and r11, r8
cmp/eq r0, r8 /* Check for valid __MEMORY_START mappings */ cmp/eq r0, r8 /* Check for valid __MEMORY_START mappings */
bt .Lpmb_done bt .Lpmb_done
...@@ -341,6 +343,7 @@ ENTRY(stack_start) ...@@ -341,6 +343,7 @@ ENTRY(stack_start)
#ifdef CONFIG_PMB #ifdef CONFIG_PMB
.LPMB_ADDR: .long PMB_ADDR .LPMB_ADDR: .long PMB_ADDR
.LPMB_DATA: .long PMB_DATA .LPMB_DATA: .long PMB_DATA
.LPMB_DATA_MASK: .long PMB_PFN_MASK | PMB_V
.LFIRST_ADDR_ENTRY: .long PAGE_OFFSET | PMB_V .LFIRST_ADDR_ENTRY: .long PAGE_OFFSET | PMB_V
.LFIRST_DATA_ENTRY: .long __MEMORY_START | PMB_V .LFIRST_DATA_ENTRY: .long __MEMORY_START | PMB_V
.LMMUCR: .long MMUCR .LMMUCR: .long MMUCR
......
...@@ -681,7 +681,7 @@ static void __init pmb_merge(struct pmb_entry *head) ...@@ -681,7 +681,7 @@ static void __init pmb_merge(struct pmb_entry *head)
/* /*
* The merged page size must be valid. * The merged page size must be valid.
*/ */
if (!pmb_size_valid(newsize)) if (!depth || !pmb_size_valid(newsize))
return; return;
head->flags &= ~PMB_SZ_MASK; head->flags &= ~PMB_SZ_MASK;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment