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
This commit is contained in:
commit
35f6cd4a06
5 changed files with 24 additions and 6 deletions
|
@ -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:
|
||||||
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;
|
||||||
* 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)
|
||||||
* 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)
|
||||||
|
|
||||||
.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)
|
||||||
#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)
|
||||||
/*
|
/*
|
||||||
* 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;
|
||||||
|
|
Loading…
Reference in a new issue