Merge branch 'misc' into for-linus
Conflicts: arch/arm/mach-integrator/integrator_ap.c
This commit is contained in:
commit
bdf4e94823
@ -212,6 +212,10 @@ config ARM_PATCH_PHYS_VIRT
|
||||
you need to shrink the kernel to the minimal size.
|
||||
|
||||
|
||||
config GENERIC_BUG
|
||||
def_bool y
|
||||
depends on BUG
|
||||
|
||||
source "init/Kconfig"
|
||||
|
||||
source "kernel/Kconfig.freezer"
|
||||
|
@ -78,7 +78,16 @@ endif
|
||||
|
||||
$(obj)/uImage: STARTADDR=$(LOADADDR)
|
||||
|
||||
check_for_multiple_loadaddr = \
|
||||
if [ $(words $(LOADADDR)) -gt 1 ]; then \
|
||||
echo 'multiple load addresses: $(LOADADDR)'; \
|
||||
echo 'This is incompatible with uImages'; \
|
||||
echo 'Specify LOADADDR on the commandline to build an uImage'; \
|
||||
false; \
|
||||
fi
|
||||
|
||||
$(obj)/uImage: $(obj)/zImage FORCE
|
||||
@$(check_for_multiple_loadaddr)
|
||||
$(call if_changed,uimage)
|
||||
@echo ' Image $@ is ready'
|
||||
|
||||
|
@ -139,8 +139,16 @@ bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \
|
||||
( echo "following symbols must have non local/private scope:" >&2; \
|
||||
echo "$$bad_syms" >&2; rm -f $@; false )
|
||||
|
||||
check_for_multiple_zreladdr = \
|
||||
if [ $(words $(ZRELADDR)) -gt 1 -a "$(CONFIG_AUTO_ZRELADDR)" = "" ]; then \
|
||||
echo 'multiple zreladdrs: $(ZRELADDR)'; \
|
||||
echo 'This needs CONFIG_AUTO_ZRELADDR to be set'; \
|
||||
false; \
|
||||
fi
|
||||
|
||||
$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
|
||||
$(addprefix $(obj)/, $(OBJS)) $(lib1funcs) FORCE
|
||||
@$(check_for_multiple_zreladdr)
|
||||
$(call if_changed,ld)
|
||||
@$(check_for_bad_syms)
|
||||
|
||||
|
@ -1546,7 +1546,7 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)
|
||||
|
||||
/* Start the next */
|
||||
case PL330_OP_START:
|
||||
if (!_start(thrd))
|
||||
if (!_thrd_active(thrd) && !_start(thrd))
|
||||
ret = -EIO;
|
||||
break;
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_TINY_RCU=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
@ -8,20 +9,29 @@ CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_ARCH_INTEGRATOR=y
|
||||
CONFIG_ARCH_INTEGRATOR_AP=y
|
||||
CONFIG_ARCH_INTEGRATOR_CP=y
|
||||
CONFIG_CPU_ARM720T=y
|
||||
CONFIG_CPU_ARM920T=y
|
||||
CONFIG_CPU_ARM922T=y
|
||||
CONFIG_CPU_ARM926T=y
|
||||
CONFIG_CPU_ARM1020=y
|
||||
CONFIG_CPU_ARM1022=y
|
||||
CONFIG_CPU_ARM1026=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_LEDS=y
|
||||
CONFIG_LEDS_CPU=y
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="console=ttyAM0,38400n8 root=/dev/nfs ip=bootp mem=32M"
|
||||
CONFIG_CMDLINE="console=ttyAM0,38400n8 root=/dev/nfs ip=bootp"
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_FPE_NWFPE=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
@ -32,7 +42,6 @@ CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_AFS_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
@ -40,6 +49,7 @@ CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
@ -56,6 +66,8 @@ CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_FB_MATROX=y
|
||||
CONFIG_FB_MATROX_MILLENIUM=y
|
||||
CONFIG_FB_MATROX_MYSTIQUE=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_PL030=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
@ -68,4 +80,3 @@ CONFIG_NFSD_V3=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
|
@ -1,3 +1,20 @@
|
||||
include include/asm-generic/Kbuild.asm
|
||||
|
||||
header-y += hwcap.h
|
||||
|
||||
generic-y += auxvec.h
|
||||
generic-y += bitsperlong.h
|
||||
generic-y += cputime.h
|
||||
generic-y += emergency-restart.h
|
||||
generic-y += errno.h
|
||||
generic-y += ioctl.h
|
||||
generic-y += irq_regs.h
|
||||
generic-y += kdebug.h
|
||||
generic-y += local.h
|
||||
generic-y += local64.h
|
||||
generic-y += percpu.h
|
||||
generic-y += poll.h
|
||||
generic-y += resource.h
|
||||
generic-y += sections.h
|
||||
generic-y += siginfo.h
|
||||
generic-y += sizes.h
|
||||
|
@ -1,4 +0,0 @@
|
||||
#ifndef __ASMARM_AUXVEC_H
|
||||
#define __ASMARM_AUXVEC_H
|
||||
|
||||
#endif
|
@ -1 +0,0 @@
|
||||
#include <asm-generic/bitsperlong.h>
|
@ -3,21 +3,58 @@
|
||||
|
||||
|
||||
#ifdef CONFIG_BUG
|
||||
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
||||
extern void __bug(const char *file, int line) __attribute__((noreturn));
|
||||
|
||||
/* give file/line information */
|
||||
#define BUG() __bug(__FILE__, __LINE__)
|
||||
|
||||
/*
|
||||
* Use a suitable undefined instruction to use for ARM/Thumb2 bug handling.
|
||||
* We need to be careful not to conflict with those used by other modules and
|
||||
* the register_undef_hook() system.
|
||||
*/
|
||||
#ifdef CONFIG_THUMB2_KERNEL
|
||||
#define BUG_INSTR_VALUE 0xde02
|
||||
#define BUG_INSTR_TYPE ".hword "
|
||||
#else
|
||||
|
||||
/* this just causes an oops */
|
||||
#define BUG() do { *(int *)0 = 0; } while (1)
|
||||
|
||||
#define BUG_INSTR_VALUE 0xe7f001f2
|
||||
#define BUG_INSTR_TYPE ".word "
|
||||
#endif
|
||||
|
||||
|
||||
#define BUG() _BUG(__FILE__, __LINE__, BUG_INSTR_VALUE)
|
||||
#define _BUG(file, line, value) __BUG(file, line, value)
|
||||
|
||||
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
||||
|
||||
/*
|
||||
* The extra indirection is to ensure that the __FILE__ string comes through
|
||||
* OK. Many version of gcc do not support the asm %c parameter which would be
|
||||
* preferable to this unpleasantness. We use mergeable string sections to
|
||||
* avoid multiple copies of the string appearing in the kernel image.
|
||||
*/
|
||||
|
||||
#define __BUG(__file, __line, __value) \
|
||||
do { \
|
||||
BUILD_BUG_ON(sizeof(struct bug_entry) != 12); \
|
||||
asm volatile("1:\t" BUG_INSTR_TYPE #__value "\n" \
|
||||
".pushsection .rodata.str, \"aMS\", %progbits, 1\n" \
|
||||
"2:\t.asciz " #__file "\n" \
|
||||
".popsection\n" \
|
||||
".pushsection __bug_table,\"a\"\n" \
|
||||
"3:\t.word 1b, 2b\n" \
|
||||
"\t.hword " #__line ", 0\n" \
|
||||
".popsection"); \
|
||||
unreachable(); \
|
||||
} while (0)
|
||||
|
||||
#else /* not CONFIG_DEBUG_BUGVERBOSE */
|
||||
|
||||
#define __BUG(__file, __line, __value) \
|
||||
do { \
|
||||
asm volatile(BUG_INSTR_TYPE #__value); \
|
||||
unreachable(); \
|
||||
} while (0)
|
||||
#endif /* CONFIG_DEBUG_BUGVERBOSE */
|
||||
|
||||
#define HAVE_ARCH_BUG
|
||||
#endif
|
||||
#endif /* CONFIG_BUG */
|
||||
|
||||
#include <asm-generic/bug.h>
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#define CACHEID_VIPT (CACHEID_VIPT_ALIASING|CACHEID_VIPT_NONALIASING)
|
||||
#define CACHEID_ASID_TAGGED (1 << 3)
|
||||
#define CACHEID_VIPT_I_ALIASING (1 << 4)
|
||||
#define CACHEID_PIPT (1 << 5)
|
||||
|
||||
extern unsigned int cacheid;
|
||||
|
||||
@ -16,6 +17,7 @@ extern unsigned int cacheid;
|
||||
#define cache_is_vipt_aliasing() cacheid_is(CACHEID_VIPT_ALIASING)
|
||||
#define icache_is_vivt_asid_tagged() cacheid_is(CACHEID_ASID_TAGGED)
|
||||
#define icache_is_vipt_aliasing() cacheid_is(CACHEID_VIPT_I_ALIASING)
|
||||
#define icache_is_pipt() cacheid_is(CACHEID_PIPT)
|
||||
|
||||
/*
|
||||
* __LINUX_ARM_ARCH__ is the minimum supported CPU architecture
|
||||
@ -26,7 +28,8 @@ extern unsigned int cacheid;
|
||||
#if __LINUX_ARM_ARCH__ >= 7
|
||||
#define __CACHEID_ARCH_MIN (CACHEID_VIPT_NONALIASING |\
|
||||
CACHEID_ASID_TAGGED |\
|
||||
CACHEID_VIPT_I_ALIASING)
|
||||
CACHEID_VIPT_I_ALIASING |\
|
||||
CACHEID_PIPT)
|
||||
#elif __LINUX_ARM_ARCH__ >= 6
|
||||
#define __CACHEID_ARCH_MIN (~CACHEID_VIVT)
|
||||
#else
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef __ARM_CPUTIME_H
|
||||
#define __ARM_CPUTIME_H
|
||||
|
||||
#include <asm-generic/cputime.h>
|
||||
|
||||
#endif /* __ARM_CPUTIME_H */
|
@ -10,6 +10,9 @@ struct dev_archdata {
|
||||
#ifdef CONFIG_DMABOUNCE
|
||||
struct dmabounce_device_info *dmabounce;
|
||||
#endif
|
||||
#ifdef CONFIG_IOMMU_API
|
||||
void *iommu; /* private IOMMU data */
|
||||
#endif
|
||||
};
|
||||
|
||||
struct pdev_archdata {
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef _ASM_EMERGENCY_RESTART_H
|
||||
#define _ASM_EMERGENCY_RESTART_H
|
||||
|
||||
#include <asm-generic/emergency-restart.h>
|
||||
|
||||
#endif /* _ASM_EMERGENCY_RESTART_H */
|
@ -1,6 +0,0 @@
|
||||
#ifndef _ARM_ERRNO_H
|
||||
#define _ARM_ERRNO_H
|
||||
|
||||
#include <asm-generic/errno.h>
|
||||
|
||||
#endif
|
@ -80,6 +80,7 @@ extern void __iomem *__arm_ioremap_caller(unsigned long, size_t, unsigned int,
|
||||
|
||||
extern void __iomem *__arm_ioremap_pfn(unsigned long, unsigned long, size_t, unsigned int);
|
||||
extern void __iomem *__arm_ioremap(unsigned long, size_t, unsigned int);
|
||||
extern void __iomem *__arm_ioremap_exec(unsigned long, size_t, bool cached);
|
||||
extern void __iounmap(volatile void __iomem *addr);
|
||||
|
||||
/*
|
||||
@ -210,11 +211,11 @@ extern void _memset_io(volatile void __iomem *, int, size_t);
|
||||
* IO port primitives for more information.
|
||||
*/
|
||||
#ifdef __mem_pci
|
||||
#define readb_relaxed(c) ({ u8 __v = __raw_readb(__mem_pci(c)); __v; })
|
||||
#define readw_relaxed(c) ({ u16 __v = le16_to_cpu((__force __le16) \
|
||||
__raw_readw(__mem_pci(c))); __v; })
|
||||
#define readl_relaxed(c) ({ u32 __v = le32_to_cpu((__force __le32) \
|
||||
__raw_readl(__mem_pci(c))); __v; })
|
||||
#define readb_relaxed(c) ({ u8 __r = __raw_readb(__mem_pci(c)); __r; })
|
||||
#define readw_relaxed(c) ({ u16 __r = le16_to_cpu((__force __le16) \
|
||||
__raw_readw(__mem_pci(c))); __r; })
|
||||
#define readl_relaxed(c) ({ u32 __r = le32_to_cpu((__force __le32) \
|
||||
__raw_readl(__mem_pci(c))); __r; })
|
||||
|
||||
#define writeb_relaxed(v,c) ((void)__raw_writeb(v,__mem_pci(c)))
|
||||
#define writew_relaxed(v,c) ((void)__raw_writew((__force u16) \
|
||||
|
@ -1 +0,0 @@
|
||||
#include <asm-generic/ioctl.h>
|
@ -1 +0,0 @@
|
||||
#include <asm-generic/irq_regs.h>
|
@ -1 +0,0 @@
|
||||
#include <asm-generic/kdebug.h>
|
@ -1 +0,0 @@
|
||||
#include <asm-generic/local.h>
|
@ -1 +0,0 @@
|
||||
#include <asm-generic/local64.h>
|
@ -34,8 +34,7 @@ struct machine_desc {
|
||||
unsigned int reserve_lp1 :1; /* never has lp1 */
|
||||
unsigned int reserve_lp2 :1; /* never has lp2 */
|
||||
unsigned int soft_reboot :1; /* soft reboot */
|
||||
void (*fixup)(struct machine_desc *,
|
||||
struct tag *, char **,
|
||||
void (*fixup)(struct tag *, char **,
|
||||
struct meminfo *);
|
||||
void (*reserve)(void);/* reserve mem blocks */
|
||||
void (*map_io)(void);/* IO mapping function */
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef __ARM_PERCPU
|
||||
#define __ARM_PERCPU
|
||||
|
||||
#include <asm-generic/percpu.h>
|
||||
|
||||
#endif
|
@ -1 +0,0 @@
|
||||
#include <asm-generic/poll.h>
|
@ -1,6 +0,0 @@
|
||||
#ifndef _ARM_RESOURCE_H
|
||||
#define _ARM_RESOURCE_H
|
||||
|
||||
#include <asm-generic/resource.h>
|
||||
|
||||
#endif
|
@ -1 +0,0 @@
|
||||
#include <asm-generic/sections.h>
|
@ -1,6 +0,0 @@
|
||||
#ifndef _ASMARM_SIGINFO_H
|
||||
#define _ASMARM_SIGINFO_H
|
||||
|
||||
#include <asm-generic/siginfo.h>
|
||||
|
||||
#endif
|
@ -1,21 +0,0 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/* Size definitions
|
||||
* Copyright (C) ARM Limited 1998. All rights reserved.
|
||||
*/
|
||||
#include <asm-generic/sizes.h>
|
||||
|
||||
#define SZ_48M (SZ_32M + SZ_16M)
|
@ -57,6 +57,7 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/irqflags.h>
|
||||
|
||||
@ -90,14 +91,13 @@ void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int,
|
||||
#define xchg(ptr,x) \
|
||||
((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
|
||||
|
||||
extern asmlinkage void __backtrace(void);
|
||||
extern asmlinkage void c_backtrace(unsigned long fp, int pmode);
|
||||
|
||||
struct mm_struct;
|
||||
extern void show_pte(struct mm_struct *mm, unsigned long addr);
|
||||
extern void __show_regs(struct pt_regs *);
|
||||
|
||||
extern int cpu_architecture(void);
|
||||
extern int __pure cpu_architecture(void);
|
||||
extern void cpu_init(void);
|
||||
|
||||
void arm_machine_restart(char mode, const char *cmd);
|
||||
|
@ -49,9 +49,6 @@ extern void __aeabi_ulcmp(void);
|
||||
|
||||
extern void fpundefinstr(void);
|
||||
|
||||
|
||||
EXPORT_SYMBOL(__backtrace);
|
||||
|
||||
/* platform dependent support */
|
||||
EXPORT_SYMBOL(__udelay);
|
||||
EXPORT_SYMBOL(__const_udelay);
|
||||
|
@ -151,6 +151,8 @@ printhex: adr r2, hexbuf
|
||||
b printascii
|
||||
ENDPROC(printhex2)
|
||||
|
||||
hexbuf: .space 16
|
||||
|
||||
.ltorg
|
||||
|
||||
ENTRY(printascii)
|
||||
@ -175,5 +177,3 @@ ENTRY(printch)
|
||||
mov r0, #0
|
||||
b 1b
|
||||
ENDPROC(printch)
|
||||
|
||||
hexbuf: .space 16
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/tls.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
#include "entry-header.S"
|
||||
#include <asm/entry-macro-multi.S>
|
||||
@ -262,8 +263,7 @@ __und_svc:
|
||||
ldr r0, [r4, #-4]
|
||||
#else
|
||||
ldrh r0, [r4, #-2] @ Thumb instruction at LR - 2
|
||||
and r9, r0, #0xf800
|
||||
cmp r9, #0xe800 @ 32-bit instruction if xx >= 0
|
||||
cmp r0, #0xe800 @ 32-bit instruction if xx >= 0
|
||||
ldrhhs r9, [r4] @ bottom 16 bits
|
||||
orrhs r0, r9, r0, lsl #16
|
||||
#endif
|
||||
@ -440,18 +440,46 @@ __und_usr:
|
||||
#endif
|
||||
beq call_fpe
|
||||
@ Thumb instruction
|
||||
#if __LINUX_ARM_ARCH__ >= 7
|
||||
#if CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7
|
||||
/*
|
||||
* Thumb-2 instruction handling. Note that because pre-v6 and >= v6 platforms
|
||||
* can never be supported in a single kernel, this code is not applicable at
|
||||
* all when __LINUX_ARM_ARCH__ < 6. This allows simplifying assumptions to be
|
||||
* made about .arch directives.
|
||||
*/
|
||||
#if __LINUX_ARM_ARCH__ < 7
|
||||
/* If the target CPU may not be Thumb-2-capable, a run-time check is needed: */
|
||||
#define NEED_CPU_ARCHITECTURE
|
||||
ldr r5, .LCcpu_architecture
|
||||
ldr r5, [r5]
|
||||
cmp r5, #CPU_ARCH_ARMv7
|
||||
blo __und_usr_unknown
|
||||
/*
|
||||
* The following code won't get run unless the running CPU really is v7, so
|
||||
* coding round the lack of ldrht on older arches is pointless. Temporarily
|
||||
* override the assembler target arch with the minimum required instead:
|
||||
*/
|
||||
.arch armv6t2
|
||||
#endif
|
||||
2:
|
||||
ARM( ldrht r5, [r4], #2 )
|
||||
THUMB( ldrht r5, [r4] )
|
||||
THUMB( add r4, r4, #2 )
|
||||
and r0, r5, #0xf800 @ mask bits 111x x... .... ....
|
||||
cmp r0, #0xe800 @ 32bit instruction if xx != 0
|
||||
cmp r5, #0xe800 @ 32bit instruction if xx != 0
|
||||
blo __und_usr_unknown
|
||||
3: ldrht r0, [r4]
|
||||
add r2, r2, #2 @ r2 is PC + 2, make it PC + 4
|
||||
orr r0, r0, r5, lsl #16
|
||||
|
||||
#if __LINUX_ARM_ARCH__ < 7
|
||||
/* If the target arch was overridden, change it back: */
|
||||
#ifdef CONFIG_CPU_32v6K
|
||||
.arch armv6k
|
||||
#else
|
||||
.arch armv6
|
||||
#endif
|
||||
#endif /* __LINUX_ARM_ARCH__ < 7 */
|
||||
#else /* !(CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7) */
|
||||
b __und_usr_unknown
|
||||
#endif
|
||||
UNWIND(.fnend )
|
||||
@ -578,6 +606,12 @@ call_fpe:
|
||||
movw_pc lr @ CP#14 (Debug)
|
||||
movw_pc lr @ CP#15 (Control)
|
||||
|
||||
#ifdef NEED_CPU_ARCHITECTURE
|
||||
.align 2
|
||||
.LCcpu_architecture:
|
||||
.word __cpu_architecture
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NEON
|
||||
.align 6
|
||||
|
||||
|
@ -32,6 +32,24 @@ static atomic_t waiting_for_crash_ipi;
|
||||
|
||||
int machine_kexec_prepare(struct kimage *image)
|
||||
{
|
||||
unsigned long page_list;
|
||||
void *reboot_code_buffer;
|
||||
page_list = image->head & PAGE_MASK;
|
||||
|
||||
reboot_code_buffer = page_address(image->control_code_page);
|
||||
|
||||
/* Prepare parameters for reboot_code_buffer*/
|
||||
kexec_start_address = image->start;
|
||||
kexec_indirection_page = page_list;
|
||||
kexec_mach_type = machine_arch_type;
|
||||
kexec_boot_atags = image->start - KEXEC_ARM_ZIMAGE_OFFSET + KEXEC_ARM_ATAGS_OFFSET;
|
||||
|
||||
/* copy our kernel relocation code to the control code page */
|
||||
memcpy(reboot_code_buffer,
|
||||
relocate_new_kernel, relocate_new_kernel_size);
|
||||
|
||||
flush_icache_range((unsigned long) reboot_code_buffer,
|
||||
(unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -82,31 +100,14 @@ void (*kexec_reinit)(void);
|
||||
|
||||
void machine_kexec(struct kimage *image)
|
||||
{
|
||||
unsigned long page_list;
|
||||
unsigned long reboot_code_buffer_phys;
|
||||
void *reboot_code_buffer;
|
||||
|
||||
|
||||
page_list = image->head & PAGE_MASK;
|
||||
|
||||
/* we need both effective and real address here */
|
||||
reboot_code_buffer_phys =
|
||||
page_to_pfn(image->control_code_page) << PAGE_SHIFT;
|
||||
reboot_code_buffer = page_address(image->control_code_page);
|
||||
|
||||
/* Prepare parameters for reboot_code_buffer*/
|
||||
kexec_start_address = image->start;
|
||||
kexec_indirection_page = page_list;
|
||||
kexec_mach_type = machine_arch_type;
|
||||
kexec_boot_atags = image->start - KEXEC_ARM_ZIMAGE_OFFSET + KEXEC_ARM_ATAGS_OFFSET;
|
||||
|
||||
/* copy our kernel relocation code to the control code page */
|
||||
memcpy(reboot_code_buffer,
|
||||
relocate_new_kernel, relocate_new_kernel_size);
|
||||
|
||||
|
||||
flush_icache_range((unsigned long) reboot_code_buffer,
|
||||
(unsigned long) reboot_code_buffer + KEXEC_CONTROL_PAGE_SIZE);
|
||||
printk(KERN_INFO "Bye!\n");
|
||||
|
||||
if (kexec_reinit)
|
||||
|
@ -319,7 +319,7 @@ void show_regs(struct pt_regs * regs)
|
||||
printk("\n");
|
||||
printk("Pid: %d, comm: %20s\n", task_pid_nr(current), current->comm);
|
||||
__show_regs(regs);
|
||||
__backtrace();
|
||||
dump_stack();
|
||||
}
|
||||
|
||||
ATOMIC_NOTIFIER_HEAD(thread_notify_head);
|
||||
|
@ -29,6 +29,8 @@
|
||||
#include <linux/fs.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/bug.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
#include <asm/unified.h>
|
||||
#include <asm/cpu.h>
|
||||
@ -42,6 +44,7 @@
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/cachetype.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
#include <asm/prom.h>
|
||||
#include <asm/mach/arch.h>
|
||||
@ -115,6 +118,13 @@ struct outer_cache_fns outer_cache __read_mostly;
|
||||
EXPORT_SYMBOL(outer_cache);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Cached cpu_architecture() result for use by assembler code.
|
||||
* C code should use the cpu_architecture() function instead of accessing this
|
||||
* variable directly.
|
||||
*/
|
||||
int __cpu_architecture __read_mostly = CPU_ARCH_UNKNOWN;
|
||||
|
||||
struct stack {
|
||||
u32 irq[3];
|
||||
u32 abt[3];
|
||||
@ -210,7 +220,7 @@ static const char *proc_arch[] = {
|
||||
"?(17)",
|
||||
};
|
||||
|
||||
int cpu_architecture(void)
|
||||
static int __get_cpu_architecture(void)
|
||||
{
|
||||
int cpu_arch;
|
||||
|
||||
@ -243,11 +253,22 @@ int cpu_architecture(void)
|
||||
return cpu_arch;
|
||||
}
|
||||
|
||||
int __pure cpu_architecture(void)
|
||||
{
|
||||
BUG_ON(__cpu_architecture == CPU_ARCH_UNKNOWN);
|
||||
|
||||
return __cpu_architecture;
|
||||
}
|
||||
|
||||
static int cpu_has_aliasing_icache(unsigned int arch)
|
||||
{
|
||||
int aliasing_icache;
|
||||
unsigned int id_reg, num_sets, line_size;
|
||||
|
||||
/* PIPT caches never alias. */
|
||||
if (icache_is_pipt())
|
||||
return 0;
|
||||
|
||||
/* arch specifies the register format */
|
||||
switch (arch) {
|
||||
case CPU_ARCH_ARMv7:
|
||||
@ -282,8 +303,14 @@ static void __init cacheid_init(void)
|
||||
/* ARMv7 register format */
|
||||
arch = CPU_ARCH_ARMv7;
|
||||
cacheid = CACHEID_VIPT_NONALIASING;
|
||||
if ((cachetype & (3 << 14)) == 1 << 14)
|
||||
switch (cachetype & (3 << 14)) {
|
||||
case (1 << 14):
|
||||
cacheid |= CACHEID_ASID_TAGGED;
|
||||
break;
|
||||
case (3 << 14):
|
||||
cacheid |= CACHEID_PIPT;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
arch = CPU_ARCH_ARMv6;
|
||||
if (cachetype & (1 << 23))
|
||||
@ -300,10 +327,11 @@ static void __init cacheid_init(void)
|
||||
printk("CPU: %s data cache, %s instruction cache\n",
|
||||
cache_is_vivt() ? "VIVT" :
|
||||
cache_is_vipt_aliasing() ? "VIPT aliasing" :
|
||||
cache_is_vipt_nonaliasing() ? "VIPT nonaliasing" : "unknown",
|
||||
cache_is_vipt_nonaliasing() ? "PIPT / VIPT nonaliasing" : "unknown",
|
||||
cache_is_vivt() ? "VIVT" :
|
||||
icache_is_vivt_asid_tagged() ? "VIVT ASID tagged" :
|
||||
icache_is_vipt_aliasing() ? "VIPT aliasing" :
|
||||
icache_is_pipt() ? "PIPT" :
|
||||
cache_is_vipt_nonaliasing() ? "VIPT nonaliasing" : "unknown");
|
||||
}
|
||||
|
||||
@ -414,6 +442,7 @@ static void __init setup_processor(void)
|
||||
}
|
||||
|
||||
cpu_name = list->cpu_name;
|
||||
__cpu_architecture = __get_cpu_architecture();
|
||||
|
||||
#ifdef MULTI_CPU
|
||||
processor = *list->proc;
|
||||
@ -861,7 +890,7 @@ static struct machine_desc * __init setup_machine_tags(unsigned int nr)
|
||||
}
|
||||
|
||||
if (mdesc->fixup)
|
||||
mdesc->fixup(mdesc, tags, &from, &meminfo);
|
||||
mdesc->fixup(tags, &from, &meminfo);
|
||||
|
||||
if (tags->hdr.tag == ATAG_CORE) {
|
||||
if (meminfo.nr_banks != 0)
|
||||
|
@ -319,17 +319,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
|
||||
*/
|
||||
platform_secondary_init(cpu);
|
||||
|
||||
/*
|
||||
* Enable local interrupts.
|
||||
*/
|
||||
notify_cpu_starting(cpu);
|
||||
local_irq_enable();
|
||||
local_fiq_enable();
|
||||
|
||||
/*
|
||||
* Setup the percpu timer for this CPU.
|
||||
*/
|
||||
percpu_timer_setup();
|
||||
|
||||
calibrate_delay();
|
||||
|
||||
@ -341,9 +331,22 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
|
||||
* before we continue.
|
||||
*/
|
||||
set_cpu_online(cpu, true);
|
||||
|
||||
/*
|
||||
* Setup the percpu timer for this CPU.
|
||||
*/
|
||||
percpu_timer_setup();
|
||||
|
||||
while (!cpu_active(cpu))
|
||||
cpu_relax();
|
||||
|
||||
/*
|
||||
* cpu_active bit is set, so it's safe to enalbe interrupts
|
||||
* now.
|
||||
*/
|
||||
local_irq_enable();
|
||||
local_fiq_enable();
|
||||
|
||||
/*
|
||||
* OK, it's off to the idle thread for us
|
||||
*/
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <linux/kdebug.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kexec.h>
|
||||
#include <linux/bug.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
@ -271,6 +272,8 @@ void die(const char *str, struct pt_regs *regs, int err)
|
||||
spin_lock_irq(&die_lock);
|
||||
console_verbose();
|
||||
bust_spinlocks(1);
|
||||
if (!user_mode(regs))
|
||||
report_bug(regs->ARM_pc, regs);
|
||||
ret = __die(str, err, thread, regs);
|
||||
|
||||
if (regs && kexec_should_crash(thread->task))
|
||||
@ -302,6 +305,24 @@ void arm_notify_die(const char *str, struct pt_regs *regs,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_GENERIC_BUG
|
||||
|
||||
int is_valid_bugaddr(unsigned long pc)
|
||||
{
|
||||
#ifdef CONFIG_THUMB2_KERNEL
|
||||
unsigned short bkpt;
|
||||
#else
|
||||
unsigned long bkpt;
|
||||
#endif
|
||||
|
||||
if (probe_kernel_address((unsigned *)pc, bkpt))
|
||||
return 0;
|
||||
|
||||
return bkpt == BUG_INSTR_VALUE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static LIST_HEAD(undef_hook);
|
||||
static DEFINE_SPINLOCK(undef_lock);
|
||||
|
||||
@ -707,16 +728,6 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
|
||||
arm_notify_die("unknown data abort code", regs, &info, instr, 0);
|
||||
}
|
||||
|
||||
void __attribute__((noreturn)) __bug(const char *file, int line)
|
||||
{
|
||||
printk(KERN_CRIT"kernel BUG at %s:%d!\n", file, line);
|
||||
*(int *)0 = 0;
|
||||
|
||||
/* Avoid "noreturn function does return" */
|
||||
for (;;);
|
||||
}
|
||||
EXPORT_SYMBOL(__bug);
|
||||
|
||||
void __readwrite_bug(const char *fn)
|
||||
{
|
||||
printk("%s called, but not implemented\n", fn);
|
||||
|
@ -21,7 +21,8 @@
|
||||
#define ARM_CPU_KEEP(x)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)
|
||||
#if (defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)) || \
|
||||
defined(CONFIG_GENERIC_BUG)
|
||||
#define ARM_EXIT_KEEP(x) x
|
||||
#define ARM_EXIT_DISCARD(x)
|
||||
#else
|
||||
|
@ -22,15 +22,10 @@
|
||||
#define mask r7
|
||||
#define offset r8
|
||||
|
||||
ENTRY(__backtrace)
|
||||
mov r1, #0x10
|
||||
mov r0, fp
|
||||
|
||||
ENTRY(c_backtrace)
|
||||
|
||||
#if !defined(CONFIG_FRAME_POINTER) || !defined(CONFIG_PRINTK)
|
||||
mov pc, lr
|
||||
ENDPROC(__backtrace)
|
||||
ENDPROC(c_backtrace)
|
||||
#else
|
||||
stmfd sp!, {r4 - r8, lr} @ Save an extra register so we have a location...
|
||||
@ -107,7 +102,6 @@ for_each_frame: tst frame, mask @ Check for address exceptions
|
||||
mov r1, frame
|
||||
bl printk
|
||||
no_frame: ldmfd sp!, {r4 - r8, pc}
|
||||
ENDPROC(__backtrace)
|
||||
ENDPROC(c_backtrace)
|
||||
|
||||
.pushsection __ex_table,"a"
|
||||
|
@ -13,6 +13,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/unwind.h>
|
||||
|
||||
#ifdef __ARMEB__
|
||||
#define xh r0
|
||||
@ -44,6 +45,7 @@
|
||||
*/
|
||||
|
||||
ENTRY(__do_div64)
|
||||
UNWIND(.fnstart)
|
||||
|
||||
@ Test for easy paths first.
|
||||
subs ip, r4, #1
|
||||
@ -189,7 +191,12 @@ ENTRY(__do_div64)
|
||||
moveq yh, xh
|
||||
moveq xh, #0
|
||||
moveq pc, lr
|
||||
UNWIND(.fnend)
|
||||
|
||||
UNWIND(.fnstart)
|
||||
UNWIND(.pad #4)
|
||||
UNWIND(.save {lr})
|
||||
Ldiv0_64:
|
||||
@ Division by 0:
|
||||
str lr, [sp, #-8]!
|
||||
bl __div0
|
||||
@ -200,4 +207,5 @@ ENTRY(__do_div64)
|
||||
mov xh, #0
|
||||
ldr pc, [sp], #8
|
||||
|
||||
UNWIND(.fnend)
|
||||
ENDPROC(__do_div64)
|
||||
|
@ -4,15 +4,15 @@
|
||||
# INITRD_PHYS must be in RAM
|
||||
|
||||
ifeq ($(CONFIG_ARCH_AT91CAP9),y)
|
||||
zreladdr-y := 0x70008000
|
||||
zreladdr-y += 0x70008000
|
||||
params_phys-y := 0x70000100
|
||||
initrd_phys-y := 0x70410000
|
||||
else ifeq ($(CONFIG_ARCH_AT91SAM9G45),y)
|
||||
zreladdr-y := 0x70008000
|
||||
zreladdr-y += 0x70008000
|
||||
params_phys-y := 0x70000100
|
||||
initrd_phys-y := 0x70410000
|
||||
else
|
||||
zreladdr-y := 0x20008000
|
||||
zreladdr-y += 0x20008000
|
||||
params_phys-y := 0x20000100
|
||||
initrd_phys-y := 0x20410000
|
||||
endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Address where decompressor will be written and eventually executed.
|
||||
#
|
||||
# default to SDRAM
|
||||
zreladdr-y := $(CONFIG_BCM_ZRELADDR)
|
||||
zreladdr-y += $(CONFIG_BCM_ZRELADDR)
|
||||
params_phys-y := 0x00000800
|
||||
|
||||
|
@ -136,8 +136,8 @@ static void __init bcmring_init_machine(void)
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
static void __init bcmring_fixup(struct machine_desc *desc,
|
||||
struct tag *t, char **cmdline, struct meminfo *mi) {
|
||||
static void __init bcmring_fixup(struct tag *t, char **cmdline,
|
||||
struct meminfo *mi) {
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
printk(KERN_NOTICE "bcmring_fixup\n");
|
||||
t->hdr.tag = ATAG_CORE;
|
||||
|
@ -1,5 +1,5 @@
|
||||
# The standard locations for stuff on CLPS711x type processors
|
||||
zreladdr-y := 0xc0028000
|
||||
zreladdr-y += 0xc0028000
|
||||
params_phys-y := 0xc0000100
|
||||
# Should probably have some agreement on these...
|
||||
initrd_phys-$(CONFIG_ARCH_P720T) := 0xc0400000
|
||||
|
@ -26,8 +26,7 @@
|
||||
#include "common.h"
|
||||
|
||||
static void __init
|
||||
fixup_clep7312(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
fixup_clep7312(struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
{
|
||||
mi->nr_banks=1;
|
||||
mi->bank[0].start = 0xc0000000;
|
||||
|
@ -37,8 +37,7 @@ static void __init edb7211_reserve(void)
|
||||
}
|
||||
|
||||
static void __init
|
||||
fixup_edb7211(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
fixup_edb7211(struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
{
|
||||
/*
|
||||
* Bank start addresses are not present in the information
|
||||
|
@ -57,8 +57,7 @@ typedef struct tag_IMAGE_PARAMS
|
||||
#define IMAGE_PARAMS_PHYS 0xC01F0000
|
||||
|
||||
static void __init
|
||||
fortunet_fixup(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
fortunet_fixup(struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
{
|
||||
IMAGE_PARAMS *ip = phys_to_virt(IMAGE_PARAMS_PHYS);
|
||||
*cmdline = phys_to_virt(ip->command_line);
|
||||
|
@ -56,8 +56,7 @@ static struct map_desc p720t_io_desc[] __initdata = {
|
||||
};
|
||||
|
||||
static void __init
|
||||
fixup_p720t(struct machine_desc *desc, struct tag *tag,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
fixup_p720t(struct tag *tag, char **cmdline, struct meminfo *mi)
|
||||
{
|
||||
/*
|
||||
* Our bootloader doesn't setup any tags (yet).
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00C00000
|
||||
|
@ -2,12 +2,12 @@ ifeq ($(CONFIG_ARCH_DAVINCI_DA8XX),y)
|
||||
ifeq ($(CONFIG_ARCH_DAVINCI_DMx),y)
|
||||
$(error Cannot enable DaVinci and DA8XX platforms concurrently)
|
||||
else
|
||||
zreladdr-y := 0xc0008000
|
||||
zreladdr-y += 0xc0008000
|
||||
params_phys-y := 0xc0000100
|
||||
initrd_phys-y := 0xc0800000
|
||||
endif
|
||||
else
|
||||
zreladdr-y := 0x80008000
|
||||
zreladdr-y += 0x80008000
|
||||
params_phys-y := 0x80000100
|
||||
initrd_phys-y := 0x80800000
|
||||
endif
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
@ -1,4 +1,4 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000400
|
||||
initrd_phys-y := 0x00800000
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET) := 0x00008000
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET) += 0x00008000
|
||||
params_phys-$(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET) := 0x00000100
|
||||
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE0_PHYS_OFFSET) := 0xc0008000
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE0_PHYS_OFFSET) += 0xc0008000
|
||||
params_phys-$(CONFIG_EP93XX_SDCE0_PHYS_OFFSET) := 0xc0000100
|
||||
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE1_PHYS_OFFSET) := 0xd0008000
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE1_PHYS_OFFSET) += 0xd0008000
|
||||
params_phys-$(CONFIG_EP93XX_SDCE1_PHYS_OFFSET) := 0xd0000100
|
||||
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE2_PHYS_OFFSET) := 0xe0008000
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE2_PHYS_OFFSET) += 0xe0008000
|
||||
params_phys-$(CONFIG_EP93XX_SDCE2_PHYS_OFFSET) := 0xe0000100
|
||||
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET) := 0xf0008000
|
||||
zreladdr-$(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET) += 0xf0008000
|
||||
params_phys-$(CONFIG_EP93XX_SDCE3_ASYNC_PHYS_OFFSET) := 0xf0000100
|
||||
|
@ -1,2 +1,2 @@
|
||||
zreladdr-y := 0x40008000
|
||||
zreladdr-y += 0x40008000
|
||||
params_phys-y := 0x40000100
|
||||
|
@ -4,8 +4,8 @@ menu "Footbridge Implementations"
|
||||
|
||||
config ARCH_CATS
|
||||
bool "CATS"
|
||||
select CLKSRC_I8253
|
||||
select CLKEVT_I8253
|
||||
select CLKSRC_I8253
|
||||
select FOOTBRIDGE_HOST
|
||||
select ISA
|
||||
select ISA_DMA
|
||||
@ -61,8 +61,8 @@ config ARCH_EBSA285_HOST
|
||||
|
||||
config ARCH_NETWINDER
|
||||
bool "NetWinder"
|
||||
select CLKSRC_I8253
|
||||
select CLKEVT_I8253
|
||||
select CLKSRC_I8253
|
||||
select FOOTBRIDGE_HOST
|
||||
select ISA
|
||||
select ISA_DMA
|
||||
|
@ -1,4 +1,4 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
||||
|
@ -76,8 +76,7 @@ __initcall(cats_hw_init);
|
||||
* hard reboots fail on early boards.
|
||||
*/
|
||||
static void __init
|
||||
fixup_cats(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
fixup_cats(struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
{
|
||||
screen_info.orig_video_lines = 25;
|
||||
screen_info.orig_video_points = 16;
|
||||
|
@ -631,8 +631,7 @@ __initcall(nw_hw_init);
|
||||
* the parameter page.
|
||||
*/
|
||||
static void __init
|
||||
fixup_netwinder(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
fixup_netwinder(struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
{
|
||||
#ifdef CONFIG_ISAPNP
|
||||
extern int isapnp_disable;
|
||||
|
@ -1,9 +1,9 @@
|
||||
ifeq ($(CONFIG_GEMINI_MEM_SWAP),y)
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
else
|
||||
zreladdr-y := 0x10008000
|
||||
zreladdr-y += 0x10008000
|
||||
params_phys-y := 0x10000100
|
||||
initrd_phys-y := 0x10800000
|
||||
endif
|
||||
|
@ -1,2 +1,2 @@
|
||||
zreladdr-$(CONFIG_ARCH_H720X) := 0x40008000
|
||||
zreladdr-$(CONFIG_ARCH_H720X) += 0x40008000
|
||||
|
||||
|
@ -1,19 +1,19 @@
|
||||
zreladdr-$(CONFIG_ARCH_MX1) := 0x08008000
|
||||
zreladdr-$(CONFIG_ARCH_MX1) += 0x08008000
|
||||
params_phys-$(CONFIG_ARCH_MX1) := 0x08000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX1) := 0x08800000
|
||||
|
||||
zreladdr-$(CONFIG_MACH_MX21) := 0xC0008000
|
||||
zreladdr-$(CONFIG_MACH_MX21) += 0xC0008000
|
||||
params_phys-$(CONFIG_MACH_MX21) := 0xC0000100
|
||||
initrd_phys-$(CONFIG_MACH_MX21) := 0xC0800000
|
||||
|
||||
zreladdr-$(CONFIG_ARCH_MX25) := 0x80008000
|
||||
zreladdr-$(CONFIG_ARCH_MX25) += 0x80008000
|
||||
params_phys-$(CONFIG_ARCH_MX25) := 0x80000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX25) := 0x80800000
|
||||
|
||||
zreladdr-$(CONFIG_MACH_MX27) := 0xA0008000
|
||||
zreladdr-$(CONFIG_MACH_MX27) += 0xA0008000
|
||||
params_phys-$(CONFIG_MACH_MX27) := 0xA0000100
|
||||
initrd_phys-$(CONFIG_MACH_MX27) := 0xA0800000
|
||||
|
||||
zreladdr-$(CONFIG_ARCH_MX3) := 0x80008000
|
||||
zreladdr-$(CONFIG_ARCH_MX3) += 0x80008000
|
||||
params_phys-$(CONFIG_ARCH_MX3) := 0x80000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX3) := 0x80800000
|
||||
|
@ -1,4 +1,4 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
||||
|
@ -126,6 +126,10 @@ static struct clk_lookup lookups[] = {
|
||||
{ /* Bus clock */
|
||||
.con_id = "apb_pclk",
|
||||
.clk = &dummy_apb_pclk,
|
||||
}, {
|
||||
/* Integrator/AP timer frequency */
|
||||
.dev_id = "ap_timer",
|
||||
.clk = &clk24mhz,
|
||||
}, { /* UART0 */
|
||||
.dev_id = "mb:16",
|
||||
.clk = &uartclk,
|
||||
|
@ -13,9 +13,6 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/* DO NOT EDIT!! - this file automatically generated
|
||||
* from .s file by awk -f s2h.awk
|
||||
*/
|
||||
/**************************************************************************
|
||||
* * Copyright © ARM Limited 1998. All rights reserved.
|
||||
* ***********************************************************************/
|
||||
@ -399,15 +396,6 @@
|
||||
#define INTEGRATOR_TIMER1_BASE (INTEGRATOR_CT_BASE + 0x100)
|
||||
#define INTEGRATOR_TIMER2_BASE (INTEGRATOR_CT_BASE + 0x200)
|
||||
|
||||
#define TICKS_PER_uSEC 24
|
||||
|
||||
/*
|
||||
* These are useconds NOT ticks.
|
||||
*
|
||||
*/
|
||||
#define mSEC_1 1000
|
||||
#define mSEC_10 (mSEC_1 * 10)
|
||||
|
||||
#define INTEGRATOR_CSR_BASE 0x10000000
|
||||
#define INTEGRATOR_CSR_SIZE 0x10000000
|
||||
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/clk.h>
|
||||
#include <video/vga.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
@ -322,27 +323,16 @@ static void __init ap_init(void)
|
||||
#define TIMER1_VA_BASE IO_ADDRESS(INTEGRATOR_TIMER1_BASE)
|
||||
#define TIMER2_VA_BASE IO_ADDRESS(INTEGRATOR_TIMER2_BASE)
|
||||
|
||||
/*
|
||||
* How long is the timer interval?
|
||||
*/
|
||||
#define TIMER_INTERVAL (TICKS_PER_uSEC * mSEC_10)
|
||||
#if TIMER_INTERVAL >= 0x100000
|
||||
#define TICKS2USECS(x) (256 * (x) / TICKS_PER_uSEC)
|
||||
#elif TIMER_INTERVAL >= 0x10000
|
||||
#define TICKS2USECS(x) (16 * (x) / TICKS_PER_uSEC)
|
||||
#else
|
||||
#define TICKS2USECS(x) ((x) / TICKS_PER_uSEC)
|
||||
#endif
|
||||
|
||||
static unsigned long timer_reload;
|
||||
|
||||
static void integrator_clocksource_init(u32 khz)
|
||||
static void integrator_clocksource_init(unsigned long inrate)
|
||||
{
|
||||
void __iomem *base = (void __iomem *)TIMER2_VA_BASE;
|
||||
u32 ctrl = TIMER_CTRL_ENABLE | TIMER_CTRL_PERIODIC;
|
||||
unsigned long rate = inrate;
|
||||
|
||||
if (khz >= 1500) {
|
||||
khz /= 16;
|
||||
if (rate >= 1500000) {
|
||||
rate /= 16;
|
||||
ctrl |= TIMER_CTRL_DIV16;
|
||||
}
|
||||
|
||||
@ -350,7 +340,7 @@ static void integrator_clocksource_init(u32 khz)
|
||||
writel(ctrl, base + TIMER_CTRL);
|
||||
|
||||
clocksource_mmio_init(base + TIMER_VALUE, "timer2",
|
||||
khz * 1000, 200, 16, clocksource_mmio_readl_down);
|
||||
rate, 200, 16, clocksource_mmio_readl_down);
|
||||
}
|
||||
|
||||
static void __iomem * const clkevt_base = (void __iomem *)TIMER1_VA_BASE;
|
||||
@ -374,15 +364,29 @@ static void clkevt_set_mode(enum clock_event_mode mode, struct clock_event_devic
|
||||
{
|
||||
u32 ctrl = readl(clkevt_base + TIMER_CTRL) & ~TIMER_CTRL_ENABLE;
|
||||
|
||||
BUG_ON(mode == CLOCK_EVT_MODE_ONESHOT);
|
||||
/* Disable timer */
|
||||
writel(ctrl, clkevt_base + TIMER_CTRL);
|
||||
|
||||
if (mode == CLOCK_EVT_MODE_PERIODIC) {
|
||||
writel(ctrl, clkevt_base + TIMER_CTRL);
|
||||
switch (mode) {
|
||||
case CLOCK_EVT_MODE_PERIODIC:
|
||||
/* Enable the timer and start the periodic tick */
|
||||
writel(timer_reload, clkevt_base + TIMER_LOAD);
|
||||
ctrl |= TIMER_CTRL_PERIODIC | TIMER_CTRL_ENABLE;
|
||||
writel(ctrl, clkevt_base + TIMER_CTRL);
|
||||
break;
|
||||
case CLOCK_EVT_MODE_ONESHOT:
|
||||
/* Leave the timer disabled, .set_next_event will enable it */
|
||||
ctrl &= ~TIMER_CTRL_PERIODIC;
|
||||
writel(ctrl, clkevt_base + TIMER_CTRL);
|
||||
break;
|
||||
case CLOCK_EVT_MODE_UNUSED:
|
||||
case CLOCK_EVT_MODE_SHUTDOWN:
|
||||
case CLOCK_EVT_MODE_RESUME:
|
||||
default:
|
||||
/* Just leave in disabled state */
|
||||
break;
|
||||
}
|
||||
|
||||
writel(ctrl, clkevt_base + TIMER_CTRL);
|
||||
}
|
||||
|
||||
static int clkevt_set_next_event(unsigned long next, struct clock_event_device *evt)
|
||||
@ -398,12 +402,10 @@ static int clkevt_set_next_event(unsigned long next, struct clock_event_device *
|
||||
|
||||
static struct clock_event_device integrator_clockevent = {
|
||||
.name = "timer1",
|
||||
.shift = 34,
|
||||
.features = CLOCK_EVT_FEAT_PERIODIC,
|
||||
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
|
||||
.set_mode = clkevt_set_mode,
|
||||
.set_next_event = clkevt_set_next_event,
|
||||
.rating = 300,
|
||||
.cpumask = cpu_all_mask,
|
||||
};
|
||||
|
||||
static struct irqaction integrator_timer_irq = {
|
||||
@ -413,29 +415,27 @@ static struct irqaction integrator_timer_irq = {
|
||||
.dev_id = &integrator_clockevent,
|
||||
};
|
||||
|
||||
static void integrator_clockevent_init(u32 khz)
|
||||
static void integrator_clockevent_init(unsigned long inrate)
|
||||
{
|
||||
struct clock_event_device *evt = &integrator_clockevent;
|
||||
unsigned long rate = inrate;
|
||||
unsigned int ctrl = 0;
|
||||
|
||||
if (khz * 1000 > 0x100000 * HZ) {
|
||||
khz /= 256;
|
||||
/* Calculate and program a divisor */
|
||||
if (rate > 0x100000 * HZ) {
|
||||
rate /= 256;
|
||||
ctrl |= TIMER_CTRL_DIV256;
|
||||
} else if (khz * 1000 > 0x10000 * HZ) {
|
||||
khz /= 16;
|
||||
} else if (rate > 0x10000 * HZ) {
|
||||
rate /= 16;
|
||||
ctrl |= TIMER_CTRL_DIV16;
|
||||
}
|
||||
|
||||
timer_reload = khz * 1000 / HZ;
|
||||
timer_reload = rate / HZ;
|
||||
writel(ctrl, clkevt_base + TIMER_CTRL);
|
||||
|
||||
evt->irq = IRQ_TIMERINT1;
|
||||
evt->mult = div_sc(khz, NSEC_PER_MSEC, evt->shift);
|
||||
evt->max_delta_ns = clockevent_delta2ns(0xffff, evt);
|
||||
evt->min_delta_ns = clockevent_delta2ns(0xf, evt);
|
||||
|
||||
setup_irq(IRQ_TIMERINT1, &integrator_timer_irq);
|
||||
clockevents_register_device(evt);
|
||||
clockevents_config_and_register(&integrator_clockevent,
|
||||
rate,
|
||||
1,
|
||||
0xffffU);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -443,14 +443,20 @@ static void integrator_clockevent_init(u32 khz)
|
||||
*/
|
||||
static void __init ap_init_timer(void)
|
||||
{
|
||||
u32 khz = TICKS_PER_uSEC * 1000;
|
||||
struct clk *clk;
|
||||
unsigned long rate;
|
||||
|
||||
clk = clk_get_sys("ap_timer", NULL);
|
||||
BUG_ON(IS_ERR(clk));
|
||||
clk_enable(clk);
|
||||
rate = clk_get_rate(clk);
|
||||
|
||||
writel(0, TIMER0_VA_BASE + TIMER_CTRL);
|
||||
writel(0, TIMER1_VA_BASE + TIMER_CTRL);
|
||||
writel(0, TIMER2_VA_BASE + TIMER_CTRL);
|
||||
|
||||
integrator_clocksource_init(khz);
|
||||
integrator_clockevent_init(khz);
|
||||
integrator_clocksource_init(rate);
|
||||
integrator_clockevent_init(rate);
|
||||
}
|
||||
|
||||
static struct sys_timer ap_timer = {
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0xa0008000
|
||||
zreladdr-y += 0xa0008000
|
||||
params_phys-y := 0xa0000100
|
||||
initrd_phys-y := 0xa0800000
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
|
||||
|
@ -397,7 +397,8 @@ void __init ixp4xx_pci_preinit(void)
|
||||
local_write_config(PCI_BASE_ADDRESS_0, 4, PHYS_OFFSET);
|
||||
local_write_config(PCI_BASE_ADDRESS_1, 4, PHYS_OFFSET + SZ_16M);
|
||||
local_write_config(PCI_BASE_ADDRESS_2, 4, PHYS_OFFSET + SZ_32M);
|
||||
local_write_config(PCI_BASE_ADDRESS_3, 4, PHYS_OFFSET + SZ_48M);
|
||||
local_write_config(PCI_BASE_ADDRESS_3, 4,
|
||||
PHYS_OFFSET + SZ_32M + SZ_16M);
|
||||
|
||||
/*
|
||||
* Enable CSR window at 64 MiB to allow PCI masters
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
@ -3,6 +3,6 @@
|
||||
# PARAMS_PHYS must be within 4MB of ZRELADDR
|
||||
# INITRD_PHYS must be in RAM
|
||||
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
@ -1,4 +1,4 @@
|
||||
zreladdr-y := 0x80008000
|
||||
zreladdr-y += 0x80008000
|
||||
params_phys-y := 0x80000100
|
||||
initrd_phys-y := 0x82000000
|
||||
|
||||
|
@ -1 +1 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
|
@ -160,7 +160,7 @@ static struct mtd_partition aspenite_nand_partitions[] = {
|
||||
}, {
|
||||
.name = "filesystem",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = SZ_48M,
|
||||
.size = SZ_32M + SZ_16M,
|
||||
.mask_flags = 0,
|
||||
}
|
||||
};
|
||||
|
@ -93,7 +93,7 @@ static struct mtd_partition ttc_dkb_onenand_partitions[] = {
|
||||
}, {
|
||||
.name = "filesystem",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = SZ_48M,
|
||||
.size = SZ_32M + SZ_16M,
|
||||
.mask_flags = 0,
|
||||
}
|
||||
};
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x10008000
|
||||
zreladdr-y += 0x10008000
|
||||
params_phys-y := 0x10000100
|
||||
initrd_phys-y := 0x10800000
|
||||
|
@ -78,8 +78,8 @@ static void __init halibut_init(void)
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
}
|
||||
|
||||
static void __init halibut_fixup(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
static void __init halibut_fixup(struct tag *tags, char **cmdline,
|
||||
struct meminfo *mi)
|
||||
{
|
||||
mi->nr_banks=1;
|
||||
mi->bank[0].start = PHYS_OFFSET;
|
||||
|
@ -53,8 +53,8 @@ static void __init mahimahi_init(void)
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
}
|
||||
|
||||
static void __init mahimahi_fixup(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
static void __init mahimahi_fixup(struct tag *tags, char **cmdline,
|
||||
struct meminfo *mi)
|
||||
{
|
||||
mi->nr_banks = 2;
|
||||
mi->bank[0].start = PHYS_OFFSET;
|
||||
|
@ -77,8 +77,8 @@ static struct map_desc sapphire_io_desc[] __initdata = {
|
||||
}
|
||||
};
|
||||
|
||||
static void __init sapphire_fixup(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
static void __init sapphire_fixup(struct tag *tags, char **cmdline,
|
||||
struct meminfo *mi)
|
||||
{
|
||||
int smi_sz = parse_tag_smi((const struct tag *)tags);
|
||||
|
||||
|
@ -48,8 +48,8 @@ static void __init trout_init_irq(void)
|
||||
msm_init_irq();
|
||||
}
|
||||
|
||||
static void __init trout_fixup(struct machine_desc *desc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
static void __init trout_fixup(struct tag *tags, char **cmdline,
|
||||
struct meminfo *mi)
|
||||
{
|
||||
mi->nr_banks = 1;
|
||||
mi->bank[0].start = PHYS_OFFSET;
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
@ -1,9 +1,9 @@
|
||||
zreladdr-$(CONFIG_ARCH_MX50) := 0x70008000
|
||||
zreladdr-$(CONFIG_ARCH_MX50) += 0x70008000
|
||||
params_phys-$(CONFIG_ARCH_MX50) := 0x70000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX50) := 0x70800000
|
||||
zreladdr-$(CONFIG_ARCH_MX51) := 0x90008000
|
||||
zreladdr-$(CONFIG_ARCH_MX51) += 0x90008000
|
||||
params_phys-$(CONFIG_ARCH_MX51) := 0x90000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX51) := 0x90800000
|
||||
zreladdr-$(CONFIG_ARCH_MX53) := 0x70008000
|
||||
zreladdr-$(CONFIG_ARCH_MX53) += 0x70008000
|
||||
params_phys-$(CONFIG_ARCH_MX53) := 0x70000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX53) := 0x70800000
|
||||
|
@ -1 +1 @@
|
||||
zreladdr-y := 0x40008000
|
||||
zreladdr-y += 0x40008000
|
||||
|
@ -1,2 +1,2 @@
|
||||
zreladdr-y := 0x80008000
|
||||
zreladdr-y += 0x80008000
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x10008000
|
||||
zreladdr-y += 0x10008000
|
||||
params_phys-y := 0x10000100
|
||||
initrd_phys-y := 0x10800000
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x80008000
|
||||
zreladdr-y += 0x80008000
|
||||
params_phys-y := 0x80000100
|
||||
initrd_phys-y := 0x80800000
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
@ -308,8 +308,8 @@ void __init orion5x_init(void)
|
||||
* Many orion-based systems have buggy bootloader implementations.
|
||||
* This is a common fixup for bogus memory tags.
|
||||
*/
|
||||
void __init tag_fixup_mem32(struct machine_desc *mdesc, struct tag *t,
|
||||
char **from, struct meminfo *meminfo)
|
||||
void __init tag_fixup_mem32(struct tag *t, char **from,
|
||||
struct meminfo *meminfo)
|
||||
{
|
||||
for (; t->hdr.size; t = tag_next(t))
|
||||
if (t->hdr.tag == ATAG_MEM &&
|
||||
|
@ -53,11 +53,9 @@ int orion5x_pci_sys_setup(int nr, struct pci_sys_data *sys);
|
||||
struct pci_bus *orion5x_pci_sys_scan_bus(int nr, struct pci_sys_data *sys);
|
||||
int orion5x_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);
|
||||
|
||||
struct machine_desc;
|
||||
struct meminfo;
|
||||
struct tag;
|
||||
extern void __init tag_fixup_mem32(struct machine_desc *, struct tag *,
|
||||
char **, struct meminfo *);
|
||||
extern void __init tag_fixup_mem32(struct tag *, char **, struct meminfo *);
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
zreladdr-y := 0x80008000
|
||||
zreladdr-y += 0x80008000
|
||||
params_phys-y := 0x80000100
|
||||
initrd_phys-y := 0x80800000
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
zreladdr-y := 0x00008000
|
||||
zreladdr-y += 0x00008000
|
||||
params_phys-y := 0x00000100
|
||||
initrd_phys-y := 0x00800000
|
||||
|
@ -1,2 +1,2 @@
|
||||
zreladdr-y := 0xa0008000
|
||||
zreladdr-y += 0xa0008000
|
||||
|
||||
|
@ -839,8 +839,8 @@ static void __init cm_x300_init(void)
|
||||
cm_x300_init_bl();
|
||||
}
|
||||
|
||||
static void __init cm_x300_fixup(struct machine_desc *mdesc, struct tag *tags,
|
||||
char **cmdline, struct meminfo *mi)
|
||||
static void __init cm_x300_fixup(struct tag *tags, char **cmdline,
|
||||
struct meminfo *mi)
|
||||
{
|
||||
/* Make sure that mi->bank[0].start = PHYS_ADDR */
|
||||
for (; tags->hdr.size; tags = tag_next(tags))
|
||||
|
@ -705,8 +705,8 @@ static void __init corgi_init(void)
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
}
|
||||
|
||||
static void __init fixup_corgi(struct machine_desc *desc,
|
||||
struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
static void __init fixup_corgi(struct tag *tags, char **cmdline,
|
||||
struct meminfo *mi)
|
||||
{
|
||||
sharpsl_save_param();
|
||||
mi->nr_banks=1;
|
||||
|
@ -41,8 +41,7 @@
|
||||
#include "clock.h"
|
||||
|
||||
/* Only e800 has 128MB RAM */
|
||||
void __init eseries_fixup(struct machine_desc *desc,
|
||||
struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
void __init eseries_fixup(struct tag *tags, char **cmdline, struct meminfo *mi)
|
||||
{
|
||||
mi->nr_banks=1;
|
||||
mi->bank[0].start = 0xa0000000;
|
||||
|
@ -1,5 +1,4 @@
|
||||
void __init eseries_fixup(struct machine_desc *desc,
|
||||
struct tag *tags, char **cmdline, struct meminfo *mi);
|
||||
void __init eseries_fixup(struct tag *tags, char **cmdline, struct meminfo *mi);
|
||||
|
||||
extern struct pxa2xx_udc_mach_info e7xx_udc_mach_info;
|
||||
extern struct pxaficp_platform_data e7xx_ficp_platform_data;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user