From owner-p4-projects Thu May 2 5:58:48 2002 Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DB8C537B404; Thu, 2 May 2002 05:58:24 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id CD44B37B417 for ; Thu, 2 May 2002 05:58:23 -0700 (PDT) Received: (from perforce@localhost) by freefall.freebsd.org (8.11.6/8.11.6) id g42CwNS83683 for perforce@freebsd.org; Thu, 2 May 2002 05:58:23 -0700 (PDT) (envelope-from dfr@freebsd.org) Date: Thu, 2 May 2002 05:58:23 -0700 (PDT) Message-Id: <200205021258.g42CwNS83683@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: perforce set sender to dfr@freebsd.org using -f From: Doug Rabson Subject: PERFORCE change 10679 for review To: Perforce Change Reviews Sender: owner-p4-projects@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG http://people.freebsd.org/~peter/p4db/chv.cgi?CH=10679 Change 10679 by dfr@dfr_home on 2002/05/02 05:57:39 Add [sf]uword32 and [sf]uword64 to access explicitly sized values in userland. Return retval[1] in edx, not retval[0]. Affected files ... ... //depot/projects/ia64/sys/ia64/ia64/support.s#4 edit ... //depot/projects/ia64/sys/ia64/ia64/trap.c#24 edit Differences ... ==== //depot/projects/ia64/sys/ia64/ia64/support.s#4 (text+ko) ==== @@ -192,7 +192,8 @@ * fu{byte,word} : fetch a byte (word) from user memory */ -ENTRY(suword, 2) +ENTRY(suword64, 2) +XENTRY(suword) movl r14=VM_MAXUSER_ADDRESS;; // make sure address is ok cmp.geu p6,p0=in0,r14 @@ -218,9 +219,9 @@ mov ret0=r0 br.ret.sptk.few rp -END(suword) +END(suword64) -ENTRY(suhword, 2) +ENTRY(suword32, 2) movl r14=VM_MAXUSER_ADDRESS;; // make sure address is ok cmp.geu p6,p0=in0,r14 @@ -246,7 +247,7 @@ mov ret0=r0 br.ret.sptk.few rp -END(suhword) +END(suword32) ENTRY(subyte, 2) @@ -276,7 +277,8 @@ END(subyte) -ENTRY(fuword, 1) +ENTRY(fuword64, 1) +XENTRY(fuword) movl r14=VM_MAXUSER_ADDRESS;; // make sure address is ok cmp.geu p6,p0=in0,r14 @@ -301,9 +303,9 @@ br.ret.sptk.few rp -END(fuword) +END(fuword64) -ENTRY(fuhword, 1) +ENTRY(fuword32, 1) movl r14=VM_MAXUSER_ADDRESS;; // make sure address is ok cmp.geu p6,p0=in0,r14 @@ -328,7 +330,7 @@ br.ret.sptk.few rp -END(fuhword) +END(fuword32) ENTRY(fubyte, 1) ==== //depot/projects/ia64/sys/ia64/ia64/trap.c#24 (text+ko) ==== @@ -926,7 +926,7 @@ #include -extern long fuhword(const void *base); +extern long fuword32(const void *base); static void ia32_syscall(struct trapframe *framep) @@ -973,14 +973,16 @@ /* * Code is first argument, followed by actual args. */ - code = fuhword(params); + code = fuword32(params); params += sizeof(int); } else if (code == SYS___syscall) { /* * Like syscall, but code is a quad, so as to maintain * quad alignment for the rest of the arguments. + * We use a 32-bit fetch in case params is not + * aligned. */ - code = fuword(params); + code = fuword32(params); params += sizeof(quad_t); } } @@ -1036,7 +1038,7 @@ switch (error) { case 0: framep->tf_r[FRAME_R8] = td->td_retval[0]; /* eax */ - framep->tf_r[FRAME_R10] = td->td_retval[0]; /* edx */ + framep->tf_r[FRAME_R10] = td->td_retval[1]; /* edx */ ia64_set_eflag(ia64_get_eflag() & ~PSL_C); break; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message