CPU Bugs: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
(replace with internet archive link since the original link went bad)
m (Bot: Replace deprecated source tag with syntaxhighlight)
 
Line 129: Line 129:
To fix this bug, one must write to the cyrix registers and set the NO-LOCK bit in CCR1, which disables all but the most essential bus locks. The downside of this is that read-modify-write atomicity is no longer guaranteed on multiprocessor systems. Source code that should prevent this condition: (untested)
To fix this bug, one must write to the cyrix registers and set the NO-LOCK bit in CCR1, which disables all but the most essential bus locks. The downside of this is that read-modify-write atomicity is no longer guaranteed on multiprocessor systems. Source code that should prevent this condition: (untested)


<source lang="asm">
<syntaxhighlight lang="asm">
MOV AL, 0xC1 ; 0xC1 refers to CCR1
MOV AL, 0xC1 ; 0xC1 refers to CCR1
OUT 0x22, AL ; Select Register
OUT 0x22, AL ; Select Register
Line 139: Line 139:
MOV AL, AH ; Load new contents
MOV AL, AH ; Load new contents
OUT 0x23, AL ; Write new CCR1 with No-Lock set
OUT 0x23, AL ; Write new CCR1 with No-Lock set
</syntaxhighlight>
</source>
[[Category:X86 CPU]]
[[Category:X86 CPU]]