From: Alan Cox Date: Sat, 21 Feb 2015 00:34:17 +0000 (+0000) Subject: platform: standardise the offset checks for raw, and use BLKMASK X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=b64dc23159a2e6ff26135748332d7085b4ae1458;p=FUZIX.git platform: standardise the offset checks for raw, and use BLKMASK --- diff --git a/Kernel/platform-6502test/devrd.c b/Kernel/platform-6502test/devrd.c index ddbf8b3c..bd3e7fdb 100644 --- a/Kernel/platform-6502test/devrd.c +++ b/Kernel/platform-6502test/devrd.c @@ -21,7 +21,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag) if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if (dptr & 0x1FF) { + if (((uint16_t)udata.u_offset|dptr) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-6809test/devrd.c b/Kernel/platform-6809test/devrd.c index ddbf8b3c..70f4fc35 100644 --- a/Kernel/platform-6809test/devrd.c +++ b/Kernel/platform-6809test/devrd.c @@ -21,7 +21,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag) if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if (dptr & 0x1FF) { + if (((uint16_t)dptr | dlen) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-8086test/devrd.c b/Kernel/platform-8086test/devrd.c index ddbf8b3c..f74f0a55 100644 --- a/Kernel/platform-8086test/devrd.c +++ b/Kernel/platform-8086test/devrd.c @@ -17,11 +17,10 @@ static int rd_transfer(bool is_read, uint8_t rawflag) int ct = 0; int map; - /* FIXME: raw is broken unless nicely aligned */ if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if (dptr & 0x1FF) { + if (((uint16_t)dptr|dlen) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-msx1/devfd.c b/Kernel/platform-msx1/devfd.c index e3db9715..afd21d21 100644 --- a/Kernel/platform-msx1/devfd.c +++ b/Kernel/platform-msx1/devfd.c @@ -23,7 +23,7 @@ static int fd_transfer(bool is_read, uint8_t rawflag) if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if (dptr & 0x1FF) { + if (((uint16_t)dptr|dlen) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-msx1/devhd.c b/Kernel/platform-msx1/devhd.c index 16530faa..7b0d0c6a 100644 --- a/Kernel/platform-msx1/devhd.c +++ b/Kernel/platform-msx1/devhd.c @@ -23,7 +23,7 @@ static int hd_transfer(bool is_read, uint8_t rawflag) if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if (dptr & 0x1FF) { + if (((uint16_t)dptr | dlen) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-msx2/devfd.c b/Kernel/platform-msx2/devfd.c index e3db9715..afd21d21 100644 --- a/Kernel/platform-msx2/devfd.c +++ b/Kernel/platform-msx2/devfd.c @@ -23,7 +23,7 @@ static int fd_transfer(bool is_read, uint8_t rawflag) if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if (dptr & 0x1FF) { + if (((uint16_t)dptr|dlen) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-msx2/devhd.c b/Kernel/platform-msx2/devhd.c index 16530faa..7b0d0c6a 100644 --- a/Kernel/platform-msx2/devhd.c +++ b/Kernel/platform-msx2/devhd.c @@ -23,7 +23,7 @@ static int hd_transfer(bool is_read, uint8_t rawflag) if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if (dptr & 0x1FF) { + if (((uint16_t)dptr | dlen) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-mtx/devsil.c b/Kernel/platform-mtx/devsil.c index 3f6e97f9..5b432f1a 100644 --- a/Kernel/platform-mtx/devsil.c +++ b/Kernel/platform-mtx/devsil.c @@ -23,7 +23,7 @@ static int sil_transfer(uint8_t minor, bool is_read, uint8_t rawflag) if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if (dptr & 0x1FF) { + if (((uint16_t)dptr | dlen) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-nc100/devrd.c b/Kernel/platform-nc100/devrd.c index 9f399f79..dd12fe39 100644 --- a/Kernel/platform-nc100/devrd.c +++ b/Kernel/platform-nc100/devrd.c @@ -20,7 +20,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag) if(rawflag) { dlen = udata.u_count; dptr = (uint16_t)udata.u_base; - if ((dlen|udata.u_offset) & 0x1FF) { + if ((dlen|udata.u_offset) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-px4plus/devfd.c b/Kernel/platform-px4plus/devfd.c index 5d5fd01b..e6778dc6 100644 --- a/Kernel/platform-px4plus/devfd.c +++ b/Kernel/platform-px4plus/devfd.c @@ -61,7 +61,7 @@ static int hd_transfer(bool is_read, uint8_t minor, uint8_t rawflag) ramd_uaddr = (uint16_t)udata.u_base; ramd_off = udata.u_offset << 1; /* Should check this higher up ? */ - if ((ramd_size & 0x1FF) || (ramd_off & 0x1FF)) + if (((uint16_t)ramd_size | ramd_off) & BLKMASK) return -EIO; } else if (rawflag == 2) { /* Swap device special */ ramd_size = swapcnt << 9; diff --git a/Kernel/platform-tgl6502/devrd.c b/Kernel/platform-tgl6502/devrd.c index ab3662b7..3928e910 100644 --- a/Kernel/platform-tgl6502/devrd.c +++ b/Kernel/platform-tgl6502/devrd.c @@ -29,7 +29,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag) dlen = udata.u_count; dptr = (uint16_t)udata.u_base; /* Must be block aligned but otherwise we are happy */ - if ((udata.u_offset|dlen) & 0x1FF) { + if (((uint16_t)udata.u_offset|dlen) & BLKMASK) { udata.u_error = EIO; return -1; } diff --git a/Kernel/platform-trs80/devfd.c b/Kernel/platform-trs80/devfd.c index 057c78fb..fabd834d 100644 --- a/Kernel/platform-trs80/devfd.c +++ b/Kernel/platform-trs80/devfd.c @@ -55,7 +55,7 @@ static int fd_transfer(uint8_t minor, bool is_read, uint8_t rawflag) block = udata.u_buf->bf_blk; nblock = 2; } else { - if ((udata.u_offset|udata.u_count) & 0x1FF) + if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK) goto bad2; dptr = (uint16_t)udata.u_base; block = udata.u_offset >> 9; diff --git a/Kernel/platform-trs80/devhd.c b/Kernel/platform-trs80/devhd.c index 8ac2009c..0ba55330 100644 --- a/Kernel/platform-trs80/devhd.c +++ b/Kernel/platform-trs80/devhd.c @@ -76,7 +76,7 @@ int hd_transfer(uint8_t minor, bool is_read, uint8_t rawflag) nblock = 2; hd_page = 0; /* Kernel */ } else if (rawflag == 1) { - if ((udata.u_offset|udata.u_count) & 0x1FF) + if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK) goto bad2; dptr = (uint16_t)udata.u_base; nblock = udata.u_count >> 9; diff --git a/Kernel/platform-zx128/devbeta.c b/Kernel/platform-zx128/devbeta.c index bc531c35..910dbd62 100644 --- a/Kernel/platform-zx128/devbeta.c +++ b/Kernel/platform-zx128/devbeta.c @@ -46,7 +46,7 @@ static int beta_transfer(uint8_t minor, bool is_read, uint8_t rawflag) block = udata.u_buf->bf_blk; betacount = 2; } else { - if ((udata.u_offset|udata.u_count) & 0x1FF) + if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK) goto bad2; betaaddr = (uint16_t)udata.u_base; block = udata.u_offset >> 9; diff --git a/Kernel/platform-zx128/devfd.c b/Kernel/platform-zx128/devfd.c index a4407a0d..dcd2b7a6 100644 --- a/Kernel/platform-zx128/devfd.c +++ b/Kernel/platform-zx128/devfd.c @@ -49,7 +49,7 @@ static int fd_transfer(uint8_t minor, bool is_read, uint8_t rawflag) block = udata.u_buf->bf_blk; nblock = 1; } else { - if ((udata.u_offset|udata.u_count) & 0x1FF) + if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK) goto bad2; dptr = (uint16_t)udata.u_base; block = udata.u_offset >> 9; diff --git a/Kernel/platform-zx128/devmdv.c b/Kernel/platform-zx128/devmdv.c index 73533c45..167b84ba 100644 --- a/Kernel/platform-zx128/devmdv.c +++ b/Kernel/platform-zx128/devmdv.c @@ -38,7 +38,7 @@ static int mdv_transfer(uint8_t minor, bool is_read, uint8_t rawflag) mdv_page = 0; } else { /* Direct to user */ - if ((udata.u_offset|udata.u_count) & 0x1FF) + if (((uint16_t)udata.u_offset|udata.u_count) & BLKMASK) goto bad; mdv_buf = (uint8_t *)udata.u_buf->bf_blk; nblock = udata.u_count >> 9;