Mask adapter channel from buffer address for QBus accesses

This commit is contained in:
CRWolff 2024-08-17 08:42:54 -06:00 committed by Paul Koning
parent ccdc5d0711
commit 4b73c8d81b

View file

@ -619,7 +619,7 @@ int32 Map_ReadB (uint32 ba, int32 bc, uint8 *buf)
int32 i; int32 i;
uint32 ma, dat; uint32 ma, dat;
ba &= 0x003FFFFF; ba = ba & 0x00FFFFFF;
if ((ba | bc) & 03) { /* check alignment */ if ((ba | bc) & 03) { /* check alignment */
for (i = ma = 0; i < bc; i++, buf++) { /* by bytes */ for (i = ma = 0; i < bc; i++, buf++) { /* by bytes */
if ((ma & VA_M_OFF) == 0) { /* need map? */ if ((ma & VA_M_OFF) == 0) { /* need map? */
@ -652,8 +652,7 @@ int32 Map_ReadW (uint32 ba, int32 bc, uint16 *buf)
int32 i; int32 i;
uint32 ma,dat; uint32 ma,dat;
ba &= 0x003FFFFF; ba = ba & 0x00FFFFFE;
ba = ba & ~01;
bc = bc & ~01; bc = bc & ~01;
if ((ba | bc) & 03) { /* check alignment */ if ((ba | bc) & 03) { /* check alignment */
for (i = ma = 0; i < bc; i = i + 2, buf++) { /* by words */ for (i = ma = 0; i < bc; i = i + 2, buf++) { /* by words */
@ -685,7 +684,7 @@ int32 Map_WriteB (uint32 ba, int32 bc, const uint8 *buf)
int32 i; int32 i;
uint32 ma, dat; uint32 ma, dat;
ba &= 0x003FFFFF; ba = ba & 0x00FFFFFF;
if ((ba | bc) & 03) { /* check alignment */ if ((ba | bc) & 03) { /* check alignment */
for (i = ma = 0; i < bc; i++, buf++) { /* by bytes */ for (i = ma = 0; i < bc; i++, buf++) { /* by bytes */
if ((ma & VA_M_OFF) == 0) { /* need map? */ if ((ma & VA_M_OFF) == 0) { /* need map? */
@ -718,8 +717,7 @@ int32 Map_WriteW (uint32 ba, int32 bc, const uint16 *buf)
int32 i; int32 i;
uint32 ma, dat; uint32 ma, dat;
ba &= 0x003FFFFF; ba = ba & 0x00FFFFFE;
ba = ba & ~01;
bc = bc & ~01; bc = bc & ~01;
if ((ba | bc) & 03) { /* check alignment */ if ((ba | bc) & 03) { /* check alignment */
for (i = ma = 0; i < bc; i = i + 2, buf++) { /* by words */ for (i = ma = 0; i < bc; i = i + 2, buf++) { /* by words */