--- src/sys/platform/pc32/i386/busdma_machdep.c 2007/06/03 11:47:10 1.19 +++ src/sys/platform/pc32/i386/busdma_machdep.c 2007/06/03 13:02:24 1.20 @@ -525,7 +525,7 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_ /* * Limit to the boundary and maximum segment size */ - if ((nextpaddr ^ sg->ds_addr) & bmask) { + if (((nextpaddr - 1) ^ sg->ds_addr) & bmask) { tmpsize = dmat->boundary - (sg->ds_addr & ~bmask); if (tmpsize > dmat->maxsegsz)