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