svn commit: r245551 - in head/sys/arm: arm include

Andrew Turner andrew at FreeBSD.org
Thu Jan 17 09:52:36 UTC 2013


Author: andrew
Date: Thu Jan 17 09:52:35 2013
New Revision: 245551
URL: http://svnweb.freebsd.org/changeset/base/245551

Log:
  * Correct KINFO_PROC_SIZE for ARM EABI.
  * Update the syscall interface to pass in the syscall value in register r7.

Modified:
  head/sys/arm/arm/trap.c
  head/sys/arm/include/proc.h

Modified: head/sys/arm/arm/trap.c
==============================================================================
--- head/sys/arm/arm/trap.c	Thu Jan 17 09:50:18 2013	(r245550)
+++ head/sys/arm/arm/trap.c	Thu Jan 17 09:52:35 2013	(r245551)
@@ -866,7 +866,11 @@ cpu_fetch_syscall_args(struct thread *td
 	register_t *ap;
 	int error;
 
+#ifdef __ARM_EABI__
+	sa->code = td->td_frame->tf_r7;
+#else
 	sa->code = sa->insn & 0x000fffff;
+#endif
 	ap = &td->td_frame->tf_r0;
 	if (sa->code == SYS_syscall) {
 		sa->code = *ap++;
@@ -905,16 +909,18 @@ syscall(struct thread *td, trapframe_t *
 	struct syscall_args sa;
 	int error;
 
+#ifndef __ARM_EABI__
 	sa.insn = *(uint32_t *)(frame->tf_pc - INSN_SIZE);
 	switch (sa.insn & SWI_OS_MASK) {
 	case 0: /* XXX: we need our own one. */
-		sa.nap = 4;
 		break;
 	default:
 		call_trapsignal(td, SIGILL, 0);
 		userret(td, frame);
 		return;
 	}
+#endif
+	sa.nap = 4;
 
 	error = syscallenter(td, &sa);
 	KASSERT(error != 0 || td->td_ar == NULL,

Modified: head/sys/arm/include/proc.h
==============================================================================
--- head/sys/arm/include/proc.h	Thu Jan 17 09:50:18 2013	(r245550)
+++ head/sys/arm/include/proc.h	Thu Jan 17 09:52:35 2013	(r245551)
@@ -60,7 +60,11 @@ struct mdproc {
 	void	*md_sigtramp;
 };
 
+#ifdef __ARM_EABI__
+#define	KINFO_PROC_SIZE 816
+#else
 #define	KINFO_PROC_SIZE 792
+#endif
 
 #define MAXARGS	8
 struct syscall_args {
@@ -69,7 +73,9 @@ struct syscall_args {
 	register_t args[MAXARGS];
 	int narg;
 	u_int nap;
+#ifndef __ARM_EABI__
 	u_int32_t insn;
+#endif
 };
 
 #endif /* !_MACHINE_PROC_H_ */


More information about the svn-src-head mailing list