NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-vax/41139: pipe(2) seems broken on VAX
The following reply was made to PR port-vax/41139; it has been noted by GNATS.
From: Izumi Tsutsui <tsutsui%ceres.dti.ne.jp@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: port-vax-maintainer%NetBSD.org@localhost,
mhitch%lightning.msu.montana.edu@localhost,
gnats-admin%NetBSD.org@localhost, netbsd-bugs%NetBSD.org@localhost,
tsutsui%ceres.dti.ne.jp@localhost
Subject: Re: port-vax/41139: pipe(2) seems broken on VAX
Date: Thu, 9 Apr 2009 20:47:08 +0900
mhitch%lightning.msu.montana.edu@localhost wrote:
> On Wed, 8 Apr 2009, Anders Magnusson wrote:
>
> > It may be worth trying, but it also may require significantly more code.
> > The movc3 instruction handles overlapping copies, but if the data block is
> > larger than 64k then it must be done manually. This is only a problem
> for kcopy,
> > copy{in,out} should not overlap :-)
>
> It's not all that much code, at least for copy{in,out}:
>
> ENTRY(copyout, 0)
> movl 8(%ap),%r3
> blss 3f # kernel space
> movl 4(%ap),%r1
> brb 2f
>
> ENTRY(copyin, 0)
> movl 4(%ap),%r1
> blss 3f # kernel space
> movl 8(%ap),%r3
> 2: mfpr $PR_ESP,%r2
> movab 1f,(%r2)
> 4: tstw 14(%ap) # check if >= 64K
> bneq 5f
> movc3 12(%ap),(%r1),(%r3)
> 1: mfpr $PR_ESP,%r2
> clrl (%r2)
> ret
> 5: movc3 $0xfffc,(%r1),(%r3)
> subl2 $0xfffc,12(%ap)
> brb 4b
>
> 3: mnegl $1,%r0
> ret
This fixes the pipe problem on 5.0.
Should we commit it and pull up to 5.0?
---
Izumi Tsutsui
Home |
Main Index |
Thread Index |
Old Index