Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2741ecb4 authored by Russell King's avatar Russell King
Browse files

Merge branch 'misc2' into devel

parents bc85e585 5de813b6
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -59,7 +59,11 @@ PAGE_OFFSET high_memory-1 Kernel direct-mapped RAM region.
				This maps the platforms RAM, and typically
				maps all platform RAM in a 1:1 relationship.

TASK_SIZE	PAGE_OFFSET-1	Kernel module space
PKMAP_BASE	PAGE_OFFSET-1	Permanent kernel mappings
				One way of mapping HIGHMEM pages into kernel
				space.

MODULES_VADDR	MODULES_END-1	Kernel module space
				Kernel modules inserted via insmod are
				placed here using dynamic mappings.

+24 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ config ARM
	select HAVE_IDE
	select RTC_LIB
	select SYS_SUPPORTS_APM_EMULATION
	select GENERIC_ATOMIC64 if (!CPU_32v6K)
	select HAVE_OPROFILE
	select HAVE_ARCH_KGDB
	select HAVE_KPROBES if (!XIP_KERNEL)
@@ -54,6 +55,9 @@ config HAVE_TCM
	bool
	select GENERIC_ALLOCATOR

config HAVE_PROC_CPU
	bool

config NO_IOPORT
	bool

@@ -163,6 +167,11 @@ config ARCH_MTD_XIP
config GENERIC_HARDIRQS_NO__DO_IRQ
	def_bool y

config ARM_L1_CACHE_SHIFT_6
	bool
	help
	  Setting ARM L1 cache line size to 64 Bytes.

if OPROFILE

config OPROFILE_ARMV6
@@ -649,6 +658,7 @@ config ARCH_S5PC1XX
	select GENERIC_GPIO
	select HAVE_CLK
	select CPU_V7
	select ARM_L1_CACHE_SHIFT_6
	help
	  Samsung S5PC1XX series based systems

@@ -938,6 +948,19 @@ config ARM_ERRATA_460075
	  ACTLR register. Note that setting specific bits in the ACTLR register
	  may not be available in non-secure mode.

config PL310_ERRATA_588369
	bool "Clean & Invalidate maintenance operations do not invalidate clean lines"
	depends on CACHE_L2X0 && ARCH_OMAP4
	help
	   The PL310 L2 cache controller implements three types of Clean &
	   Invalidate maintenance operations: by Physical Address
	   (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC).
	   They are architecturally defined to behave as the execution of a
	   clean operation followed immediately by an invalidate operation,
	   both performing to the same memory location. This functionality
	   is not correctly implemented in PL310 as clean lines are not
	   invalidated as a result of these operations. Note that this errata
	   uses Texas Instrument's secure monitor api.
endmenu

source "arch/arm/common/Kconfig"
@@ -1255,6 +1278,7 @@ config ALIGNMENT_TRAP
	bool
	depends on CPU_CP15_MMU
	default y if !ARCH_EBSA110
	select HAVE_PROC_CPU if PROC_FS
	help
	  ARM processors cannot fetch/store information which is not
	  naturally aligned on the bus, i.e., a 4 byte fetch must start at an
+1 −5
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
#

HEAD	= head.o
OBJS	= misc.o
OBJS	= misc.o decompress.o
FONTC	= $(srctree)/drivers/video/console/font_acorn_8x8.c

#
@@ -106,10 +106,6 @@ lib1funcs = $(obj)/lib1funcs.o
$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S FORCE
	$(call cmd,shipped)

# Don't allow any static data in misc.o, which
# would otherwise mess up our GOT table
CFLAGS_misc.o := -Dstatic=

$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
	 	$(addprefix $(obj)/, $(OBJS)) $(lib1funcs) FORCE
	$(call if_changed,ld)
+45 −0
Original line number Diff line number Diff line
#define _LINUX_STRING_H_

#include <linux/compiler.h>	/* for inline */
#include <linux/types.h>	/* for size_t */
#include <linux/stddef.h>	/* for NULL */
#include <linux/linkage.h>
#include <asm/string.h>

extern unsigned long free_mem_ptr;
extern unsigned long free_mem_end_ptr;
extern void error(char *);

#define STATIC static

#define ARCH_HAS_DECOMP_WDOG

/* Diagnostic functions */
#ifdef DEBUG
#  define Assert(cond,msg) {if(!(cond)) error(msg);}
#  define Trace(x) fprintf x
#  define Tracev(x) {if (verbose) fprintf x ;}
#  define Tracevv(x) {if (verbose>1) fprintf x ;}
#  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
#else
#  define Assert(cond,msg)
#  define Trace(x)
#  define Tracev(x)
#  define Tracevv(x)
#  define Tracec(c,x)
#  define Tracecv(c,x)
#endif

#ifdef CONFIG_KERNEL_GZIP
#include "../../../../lib/decompress_inflate.c"
#endif

#ifdef CONFIG_KERNEL_LZO
#include "../../../../lib/decompress_unlzo.c"
#endif

void do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
{
	decompress(input, len, NULL, NULL, output, NULL, error);
}
+11 −98
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ unsigned int __machine_arch_type;
#include <linux/compiler.h>	/* for inline */
#include <linux/types.h>	/* for size_t */
#include <linux/stddef.h>	/* for NULL */
#include <asm/string.h>
#include <linux/linkage.h>
#include <asm/string.h>

#include <asm/unaligned.h>

@@ -117,57 +117,7 @@ static void putstr(const char *ptr)

#endif

#define __ptr_t void *

#define memzero(s,n) __memzero(s,n)

/*
 * Optimised C version of memzero for the ARM.
 */
void __memzero (__ptr_t s, size_t n)
{
	union { void *vp; unsigned long *ulp; unsigned char *ucp; } u;
	int i;

	u.vp = s;

	for (i = n >> 5; i > 0; i--) {
		*u.ulp++ = 0;
		*u.ulp++ = 0;
		*u.ulp++ = 0;
		*u.ulp++ = 0;
		*u.ulp++ = 0;
		*u.ulp++ = 0;
		*u.ulp++ = 0;
		*u.ulp++ = 0;
	}

	if (n & 1 << 4) {
		*u.ulp++ = 0;
		*u.ulp++ = 0;
		*u.ulp++ = 0;
		*u.ulp++ = 0;
	}

	if (n & 1 << 3) {
		*u.ulp++ = 0;
		*u.ulp++ = 0;
	}

	if (n & 1 << 2)
		*u.ulp++ = 0;

	if (n & 1 << 1) {
		*u.ucp++ = 0;
		*u.ucp++ = 0;
	}

	if (n & 1)
		*u.ucp++ = 0;
}

static inline __ptr_t memcpy(__ptr_t __dest, __const __ptr_t __src,
			    size_t __n)
void *memcpy(void *__dest, __const void *__src, size_t __n)
{
	int i = 0;
	unsigned char *d = (unsigned char *)__dest, *s = (unsigned char *)__src;
@@ -204,59 +154,20 @@ static inline __ptr_t memcpy(__ptr_t __dest, __const __ptr_t __src,
/*
 * gzip delarations
 */
#define STATIC static

/* Diagnostic functions */
#ifdef DEBUG
#  define Assert(cond,msg) {if(!(cond)) error(msg);}
#  define Trace(x) fprintf x
#  define Tracev(x) {if (verbose) fprintf x ;}
#  define Tracevv(x) {if (verbose>1) fprintf x ;}
#  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
#else
#  define Assert(cond,msg)
#  define Trace(x)
#  define Tracev(x)
#  define Tracevv(x)
#  define Tracec(c,x)
#  define Tracecv(c,x)
#endif

static void error(char *m);

extern char input_data[];
extern char input_data_end[];

static unsigned char *output_data;
static unsigned long output_ptr;

static void error(char *m);
unsigned char *output_data;
unsigned long output_ptr;

static void putstr(const char *);

static unsigned long free_mem_ptr;
static unsigned long free_mem_end_ptr;

#ifdef STANDALONE_DEBUG
#define NO_INFLATE_MALLOC
#endif

#define ARCH_HAS_DECOMP_WDOG

#ifdef CONFIG_KERNEL_GZIP
#include "../../../../lib/decompress_inflate.c"
#endif

#ifdef CONFIG_KERNEL_LZO
#include "../../../../lib/decompress_unlzo.c"
#endif
unsigned long free_mem_ptr;
unsigned long free_mem_end_ptr;

#ifndef arch_error
#define arch_error(x)
#endif

static void error(char *x)
void error(char *x)
{
	arch_error(x);

@@ -272,6 +183,8 @@ asmlinkage void __div0(void)
	error("Attempting division by 0!");
}

extern void do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));

#ifndef STANDALONE_DEBUG

unsigned long
@@ -292,8 +205,8 @@ decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
	output_ptr = get_unaligned_le32(tmp);

	putstr("Uncompressing Linux...");
	decompress(input_data, input_data_end - input_data,
			NULL, NULL, output_data, NULL, error);
	do_decompress(input_data, input_data_end - input_data,
			output_data, error);
	putstr(" done, booting the kernel.\n");
	return output_ptr;
}
Loading