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

Commit 51e8703b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'next' of git://git.monstr.eu/linux-2.6-microblaze: (33 commits)
  microblaze: Do not copy reset vectors/manual reset vector setup
  microblaze: Fix _reset function
  microblaze: Fix microblaze init vectors
  microblaze: Fix circular headers dependency when ftrace is enabled.
  microblaze: Fix typo in Kconfig
  microblaze: Add missing export symbols for lib functions
  microblaze: Fix /dev/zero corruption from __clear_user()
  microblaze: Convert irq_chip to new functions
  microblaze: Select GENERIC_HARDIRQS_NO_DEPRECATED
  microblaze: Remove stale irq_chip.end
  microblaze: Fix sparse warnings - signal.c
  microblaze: Fix sparse warning - fault.c
  microblaze: Fix missing microblaze specific syscalls declaration
  microblaze: Fix sparse warnings - cache.c
  microblaze: Fix sparse warning - cpuinfo.h
  microblaze: Fix sparse warning - unwind.c
  microblaze: Fix sparse warning - consistent_alloc function
  microblaze: Fix sparse warnings - ptrace
  microblaze: Fix sparse warning - sw_exceptions
  microblaze: Fix sparse warning - timer.c
  ...
parents 1fd06bb1 0b9b0200
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ config MICROBLAZE
	select OF_EARLY_FLATTREE
	select HAVE_GENERIC_HARDIRQS
	select GENERIC_IRQ_PROBE
	select GENERIC_HARDIRQS_NO_DEPRECATED

config SWAP
	def_bool n
@@ -183,6 +184,17 @@ config LOWMEM_SIZE
	hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
	default "0x30000000"

config MANUAL_RESET_VECTOR
	hex "Microblaze reset vector address setup"
	default "0x0"
	help
	  Set this option to have the kernel override the CPU Reset vector.
	  If zero, no change will be made to the MicroBlaze reset vector at
	  address 0x0.
	  If non-zero, a jump instruction to this address, will be written
	  to the reset vector at address 0x0.
	  If you are unsure, set it to default value 0x0.

config KERNEL_START_BOOL
	bool "Set custom kernel base address"
	depends on ADVANCED_OPTIONS
@@ -247,7 +259,7 @@ endmenu

source "mm/Kconfig"

menu "Exectuable file formats"
menu "Executable file formats"

source "fs/Kconfig.binfmt"

+9 −4
Original line number Diff line number Diff line
@@ -84,12 +84,13 @@ do { \
#define flush_dcache_mmap_lock(mapping)		do { } while (0)
#define flush_dcache_mmap_unlock(mapping)	do { } while (0)


#define flush_cache_dup_mm(mm)				do { } while (0)
#define flush_cache_vmap(start, end)			do { } while (0)
#define flush_cache_vunmap(start, end)			do { } while (0)
#define flush_cache_mm(mm)			do { } while (0)
#define flush_cache_page(vma, vmaddr, pfn)	do { } while (0)

#define flush_cache_page(vma, vmaddr, pfn) \
	flush_dcache_range(pfn << PAGE_SHIFT, (pfn << PAGE_SHIFT) + PAGE_SIZE);

/* MS: kgdb code use this macro, wrong len with FLASH */
#if 0
@@ -104,9 +105,13 @@ do { \
#define copy_to_user_page(vma, page, vaddr, dst, src, len)		\
do {									\
	u32 addr = virt_to_phys(dst);					\
	invalidate_icache_range((unsigned) (addr), (unsigned) (addr) + (len));\
	memcpy((dst), (src), (len));					\
	flush_dcache_range((unsigned) (addr), (unsigned) (addr) + (len));\
	if (vma->vm_flags & VM_EXEC) {					\
		invalidate_icache_range((unsigned) (addr),		\
					(unsigned) (addr) + PAGE_SIZE);	\
		flush_dcache_range((unsigned) (addr),			\
					(unsigned) (addr) + PAGE_SIZE);	\
	}								\
} while (0)

#define copy_from_user_page(vma, page, vaddr, dst, src, len)		\
+2 −2
Original line number Diff line number Diff line
@@ -96,8 +96,8 @@ void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu);

static inline unsigned int fcpu(struct device_node *cpu, char *n)
{
	int *val;
	return (val = (int *) of_get_property(cpu, n, NULL)) ?
	const __be32 *val;
	return (val = of_get_property(cpu, n, NULL)) ?
							be32_to_cpup(val) : 0;
}

+0 −36
Original line number Diff line number Diff line
@@ -31,40 +31,4 @@ DECLARE_PER_CPU(unsigned int, R11_SAVE); /* Temp variable for entry */
DECLARE_PER_CPU(unsigned int, CURRENT_SAVE); /* Saved current pointer */
# endif /* __ASSEMBLY__ */

#ifndef CONFIG_MMU

/* noMMU hasn't any space for args */
# define STATE_SAVE_ARG_SPACE	(0)

#else /* CONFIG_MMU */

/* If true, system calls save and restore all registers (except result
 * registers, of course).  If false, then `call clobbered' registers
 * will not be preserved, on the theory that system calls are basically
 * function calls anyway, and the caller should be able to deal with it.
 * This is a security risk, of course, as `internal' values may leak out
 * after a system call, but that certainly doesn't matter very much for
 * a processor with no MMU protection!  For a protected-mode kernel, it
 * would be faster to just zero those registers before returning.
 *
 * I can not rely on the glibc implementation. If you turn it off make
 * sure that r11/r12 is saved in user-space. --KAA
 *
 * These are special variables using by the kernel trap/interrupt code
 * to save registers in, at a time when there are no spare registers we
 * can use to do so, and we can't depend on the value of the stack
 * pointer.  This means that they must be within a signed 16-bit
 * displacement of 0x00000000.
 */

/* A `state save frame' is a struct pt_regs preceded by some extra space
 * suitable for a function call stack frame. */

/* Amount of room on the stack reserved for arguments and to satisfy the
 * C calling conventions, in addition to the space used by the struct
 * pt_regs that actually holds saved values. */
#define STATE_SAVE_ARG_SPACE	(6*4) /* Up to six arguments */

#endif /* CONFIG_MMU */

#endif /* _ASM_MICROBLAZE_ENTRY_H */
+3 −0
Original line number Diff line number Diff line
@@ -66,6 +66,9 @@
asmlinkage void full_exception(struct pt_regs *regs, unsigned int type,
							int fsr, int addr);

asmlinkage void sw_exception(struct pt_regs *regs);
void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig);

void die(const char *str, struct pt_regs *fp, long err);
void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr);

Loading