*BSD News Article 12362


Return to BSD News archive

Xref: sserve comp.os.386bsd.questions:507 comp.os.386bsd.development:101
Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!uwm.edu!cs.utexas.edu!sun-barr!olivea!decwrl!netcomsv!netcom.com!jmonroy
From: jmonroy@netcom.com (Jesus Monroy Jr)
Newsgroups: comp.os.386bsd.questions,comp.os.386bsd.development
Subject: Intel Bug on movsb
Message-ID: <1993Mar5.112138.2011@netcom.com>
Date: 5 Mar 93 11:21:38 GMT
Organization: Netcom - Online Communication Services  (408 241-9760 guest)
Lines: 49


 SORRY for the cross post... but I could not find the original article.
======================================================================= 
>>         I have been having some wrong results when optimizing
>> some assembly code for a Future Domain SCSI card.  More specifically,
>> I took the following code:
>>
>>         cld
>>         movb (%esi), %al
>>         movb %al, (%edi)
>>         incl %edi
>>
>> and replaced it with the following:
>>
>>         movb (%esi), %al
>>         stosb
>>
>> The resulting code when compiled does not work.  This paricular code
>> is repeated n times when data is read from an i/o port.
>>
 
        What you have found is an Intel bug in the microcode.
        It does not work as documented.
 
        Here is a clip from a program I wrote.
        It has your fix. IT is written in MASM
        but is still readable.
        ======================================
next:
         shl  al, 01                    ; shift bit to carry flag
         jnc  no_bit
 
         mov  si, offset one_char
         jmp  show
no_bit:
         mov  si, offset zero_char
show:
         movsb                          ; move character into slot.
         inc  si                        ; explicitly increment "si" -- bug fix
         movsb                          ; move attrib into slot.
         loop next
        ======================================
 
        Best of Luck.
 
___________________________________________________________________________
Jesus Monroy Jr                                          jmonroy@netcom.com
/386BSD/device-drivers /fd /qic /clock /documentation
___________________________________________________________________________