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

Commit 5f32ed14 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull parisc updates from Helge Deller.

The bulk of this is optimized page coping/clearing and cache flushing
(virtual caches are lovely) by John David Anglin.

* 'parisc-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: (31 commits)
  arch/parisc/include/asm: use ARRAY_SIZE macro in mmzone.h
  parisc: remove empty lines and unnecessary #ifdef coding in include/asm/signal.h
  parisc: sendfile and sendfile64 syscall cleanups
  parisc: switch to available compat_sched_rr_get_interval implementation
  parisc: fix fallocate syscall
  parisc: fix error return codes for rt_sigaction and rt_sigprocmask
  parisc: convert msgrcv and msgsnd syscalls to use compat layer
  parisc: correctly wire up mq_* functions for CONFIG_COMPAT case
  parisc: fix personality on 32bit kernel
  parisc: wire up process_vm_readv, process_vm_writev, kcmp and finit_module syscalls
  parisc: led driver requires CONFIG_VM_EVENT_COUNTERS
  parisc: remove unused compat_rt_sigframe.h header
  parisc/mm/fault.c: Port OOM changes to do_page_fault
  parisc: space register variables need to be in native length (unsigned long)
  parisc: fix ptrace breakage
  parisc: always detect multiple physical ranges
  parisc: ensure that mmapped shared pages are aligned at SHMLBA addresses
  parisc: disable preemption while flushing D- or I-caches through TMPALIAS region
  parisc: remove IRQF_DISABLED
  parisc: fixes and cleanups in page cache flushing (4/4)
  ...
parents c68fea34 1dda59b4
Loading
Loading
Loading
Loading
+21 −0
Original line number Original line Diff line number Diff line
@@ -160,6 +160,23 @@ config PREFETCH
	def_bool y
	def_bool y
	depends on PA8X00 || PA7200
	depends on PA8X00 || PA7200


config MLONGCALLS
	bool "Enable the -mlong-calls compiler option for big kernels"
	def_bool y if (!MODULES)
	depends on PA8X00
	help
	  If you configure the kernel to include many drivers built-in instead
	  as modules, the kernel executable may become too big, so that the
	  linker will not be able to resolve some long branches and fails to link
	  your vmlinux kernel. In that case enabling this option will help you
	  to overcome this limit by using the -mlong-calls compiler option.

	  Usually you want to say N here, unless you e.g. want to build
	  a kernel which includes all necessary drivers built-in and which can
	  be used for TFTP booting without the need to have an initrd ramdisk.

	  Enabling this option will probably slow down your kernel.

config 64BIT
config 64BIT
	bool "64-bit kernel"
	bool "64-bit kernel"
	depends on PA8X00
	depends on PA8X00
@@ -254,6 +271,10 @@ config COMPAT
	def_bool y
	def_bool y
	depends on 64BIT
	depends on 64BIT


config SYSVIPC_COMPAT
	def_bool y
	depends on COMPAT && SYSVIPC

config HPUX
config HPUX
	bool "Support for HP-UX binaries"
	bool "Support for HP-UX binaries"
	depends on !64BIT
	depends on !64BIT
+8 −5
Original line number Original line Diff line number Diff line
@@ -32,11 +32,6 @@ ifdef CONFIG_64BIT
UTS_MACHINE	:= parisc64
UTS_MACHINE	:= parisc64
CHECKFLAGS	+= -D__LP64__=1 -m64
CHECKFLAGS	+= -D__LP64__=1 -m64
WIDTH		:= 64
WIDTH		:= 64

# FIXME: if no default set, should really try to locate dynamically
ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE	:= hppa64-linux-gnu-
endif
else # 32-bit
else # 32-bit
WIDTH		:=
WIDTH		:=
endif
endif
@@ -44,6 +39,10 @@ endif
# attempt to help out folks who are cross-compiling
# attempt to help out folks who are cross-compiling
ifeq ($(NATIVE),1)
ifeq ($(NATIVE),1)
CROSS_COMPILE	:= hppa$(WIDTH)-linux-
CROSS_COMPILE	:= hppa$(WIDTH)-linux-
else
 ifeq ($(CROSS_COMPILE),)
 CROSS_COMPILE	:= hppa$(WIDTH)-linux-gnu-
 endif
endif
endif


OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
@@ -65,6 +64,10 @@ ifndef CONFIG_FUNCTION_TRACER
  cflags-y	+= -ffunction-sections
  cflags-y	+= -ffunction-sections
endif
endif


# Use long jumps instead of long branches (needed if your linker fails to
# link a too big vmlinux executable)
cflags-$(CONFIG_MLONGCALLS)	+= -mlong-calls

# select which processor to optimise for
# select which processor to optimise for
cflags-$(CONFIG_PA7100)		+= -march=1.1 -mschedule=7100
cflags-$(CONFIG_PA7100)		+= -march=1.1 -mschedule=7100
cflags-$(CONFIG_PA7200)		+= -march=1.1 -mschedule=7200
cflags-$(CONFIG_PA7200)		+= -march=1.1 -mschedule=7200
+1 −2
Original line number Original line Diff line number Diff line
@@ -43,8 +43,7 @@ int hpux_execve(struct pt_regs *regs)


	error = do_execve(filename->name,
	error = do_execve(filename->name,
			  (const char __user *const __user *) regs->gr[25],
			  (const char __user *const __user *) regs->gr[25],
			  (const char __user *const __user *) regs->gr[24],
			  (const char __user *const __user *) regs->gr[24]);
			  regs);


	putname(filename);
	putname(filename);


+2 −0
Original line number Original line Diff line number Diff line
@@ -115,7 +115,9 @@ flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vma
{
{
	if (PageAnon(page)) {
	if (PageAnon(page)) {
		flush_tlb_page(vma, vmaddr);
		flush_tlb_page(vma, vmaddr);
		preempt_disable();
		flush_dcache_page_asm(page_to_phys(page), vmaddr);
		flush_dcache_page_asm(page_to_phys(page), vmaddr);
		preempt_enable();
	}
	}
}
}


+61 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ typedef u16 compat_nlink_t;
typedef u16	compat_ipc_pid_t;
typedef u16	compat_ipc_pid_t;
typedef s32	compat_daddr_t;
typedef s32	compat_daddr_t;
typedef u32	compat_caddr_t;
typedef u32	compat_caddr_t;
typedef s32	compat_key_t;
typedef s32	compat_timer_t;
typedef s32	compat_timer_t;


typedef s32	compat_int_t;
typedef s32	compat_int_t;
@@ -188,6 +189,66 @@ typedef struct compat_siginfo {
#define COMPAT_OFF_T_MAX	0x7fffffff
#define COMPAT_OFF_T_MAX	0x7fffffff
#define COMPAT_LOFF_T_MAX	0x7fffffffffffffffL
#define COMPAT_LOFF_T_MAX	0x7fffffffffffffffL


struct compat_ipc64_perm {
	compat_key_t key;
	__compat_uid_t uid;
	__compat_gid_t gid;
	__compat_uid_t cuid;
	__compat_gid_t cgid;
	unsigned short int __pad1;
	compat_mode_t mode;
	unsigned short int __pad2;
	unsigned short int seq;
	unsigned int __pad3;
	unsigned long __unused1;	/* yes they really are 64bit pads */
	unsigned long __unused2;
};

struct compat_semid64_ds {
	struct compat_ipc64_perm sem_perm;
	compat_time_t sem_otime;
	unsigned int __unused1;
	compat_time_t sem_ctime;
	unsigned int __unused2;
	compat_ulong_t sem_nsems;
	compat_ulong_t __unused3;
	compat_ulong_t __unused4;
};

struct compat_msqid64_ds {
	struct compat_ipc64_perm msg_perm;
	unsigned int __unused1;
	compat_time_t msg_stime;
	unsigned int __unused2;
	compat_time_t msg_rtime;
	unsigned int __unused3;
	compat_time_t msg_ctime;
	compat_ulong_t msg_cbytes;
	compat_ulong_t msg_qnum;
	compat_ulong_t msg_qbytes;
	compat_pid_t msg_lspid;
	compat_pid_t msg_lrpid;
	compat_ulong_t __unused4;
	compat_ulong_t __unused5;
};

struct compat_shmid64_ds {
	struct compat_ipc64_perm shm_perm;
	unsigned int __unused1;
	compat_time_t shm_atime;
	unsigned int __unused2;
	compat_time_t shm_dtime;
	unsigned int __unused3;
	compat_time_t shm_ctime;
	unsigned int __unused4;
	compat_size_t shm_segsz;
	compat_pid_t shm_cpid;
	compat_pid_t shm_lpid;
	compat_ulong_t shm_nattch;
	compat_ulong_t __unused5;
	compat_ulong_t __unused6;
};

/*
/*
 * A pointer passed in from user mode. This should not
 * A pointer passed in from user mode. This should not
 * be used for syscall parameters, just declare them
 * be used for syscall parameters, just declare them
Loading