On certain newer Intel Atom based motherboards, for instance the
D2500CC which I have, syscons in text-mode fails to show the expected contents due to write errors into video-memory. At least one of the causes is that we copy from syscons internal buffer to the video memory with optimized bcopy(9) which uses >16bit operations. Until now, 32bit and wider operations have always worked on the video memory, but since I cannot find a single source which says that this SHALL work, and since these chipsets/bugs are now out there, this commit changes syscons to always use 16bit copies on i386 & amd64. This may be relevevant for PR's: 166262 166639 and various other bug reports floating elsewhere on the net, but I lack hardware to test those.
This commit is contained in:
parent
77d92cc9de
commit
1b14ff5075
@ -35,9 +35,16 @@
|
||||
|
||||
/* some macros */
|
||||
#if defined(__amd64__) || defined(__i386__)
|
||||
#define bcopy_io(s, d, c) bcopy((void *)(s), (void *)(d), (c))
|
||||
#define bcopy_toio(s, d, c) bcopy((void *)(s), (void *)(d), (c))
|
||||
#define bcopy_fromio(s, d, c) bcopy((void *)(s), (void *)(d), (c))
|
||||
|
||||
static __inline void
|
||||
copyw(uint16_t *src, uint16_t *dst, size_t size)
|
||||
{
|
||||
while (size--)
|
||||
*dst++ = *src++;
|
||||
}
|
||||
#define bcopy_io(s, d, c) copyw((void*)(s), (void*)(d), (c))
|
||||
#define bcopy_toio(s, d, c) copyw((void*)(s), (void*)(d), (c))
|
||||
#define bcopy_fromio(s, d, c) copyw((void*)(s), (void*)(d), (c))
|
||||
#define bzero_io(d, c) bzero((void *)(d), (c))
|
||||
#define fill_io(p, d, c) fill((p), (void *)(d), (c))
|
||||
#define fillw_io(p, d, c) fillw((p), (void *)(d), (c))
|
||||
|
Loading…
x
Reference in New Issue
Block a user