socz80: align with current code
authorAlan Cox <alan@linux.intel.com>
Wed, 8 Nov 2017 16:42:26 +0000 (16:42 +0000)
committerAlan Cox <alan@linux.intel.com>
Wed, 8 Nov 2017 16:42:26 +0000 (16:42 +0000)
Kernel/platform-socz80/devrd.c
Kernel/platform-socz80/kernel.def

index a0fe303..7881f9a 100644 (file)
@@ -32,39 +32,24 @@ int rd_write(uint8_t minor, uint8_t rawflag, uint8_t flag)
 int ramdisk_transfer(bool is_read, uint8_t minor, uint8_t rawflag)
 {
     blkno_t block;
-    int block_xfer;     /* r/w return value (number of 512 byte blocks transferred) */
-    char *dptr;
-    int dlen;
     uint16_t addr;
 
-    if(rawflag){
-        dlen = udata.u_count;
-        dptr = udata.u_base;
-        block = udata.u_offset >> 9;
-        block_xfer = dlen >> 9;
-    }else{ /* rawflag == 0 */
-        dlen = 512;
-        dptr = udata.u_buf->bf_data;
-        block = udata.u_buf->bf_blk;
-        block_xfer = 1;
+    if (rawflag) {
+        if (d_blkoff(9))
+            return -1;
     }
 
+    block = udata.u_block;
+
     if(block > (2 * 1024 * 2)){ /* > 2MB? */
         udata.u_error = EIO;
         return -1;
     }
 
-    switch(minor){
-        case 0: 
-            block += (4 * 1024 * 2); /* rd0 at 4MB */ 
-            break;
-        case 1: 
-            block += (6 * 1024 * 2); /* rd1 at 6MB */
-            break;
-        default:
-            udata.u_error = ENXIO;
-            return -1;
-    }
+    if (minor == 0)
+        block += (4 * 1024 * 2); /* rd0 at 4MB */
+    else
+        block += (6 * 1024 * 2); /* rd1 at 6MB */
 
     /* compute address in 256-byte chunks */
     addr = block << 1;
@@ -74,8 +59,8 @@ int ramdisk_transfer(bool is_read, uint8_t minor, uint8_t rawflag)
 
     /* FIXME Should be able to avoid the __critical once bank switching is fixed */
     __critical {
-        rd_dlen = dlen;
-        rd_dptr = dptr;
+        rd_dlen = udata.u_nblock << 9;
+        rd_dptr = udata.u_dptr;
         rd_address = addr;
         if(is_read)
             ramdisk_read();
@@ -83,7 +68,7 @@ int ramdisk_transfer(bool is_read, uint8_t minor, uint8_t rawflag)
             ramdisk_write();
     }
 
-    return block_xfer;
+    return udata.u_nblock << BLKSHIFT;
 }
 
 
@@ -92,7 +77,7 @@ int rd_open(uint8_t minor)
     if(minor < NUM_DEV_RD){
         return 0;
     } else {
-        udata.u_error = EIO;
+        udata.u_error = ENXIO;
         return -1;
     }
 }
index bf28fa4..3615372 100644 (file)
@@ -6,3 +6,8 @@ U_DATA__TOTALSIZE           .equ 0x300        ; 256+256+256 bytes.
 Z80_TYPE                   .equ 0            ; Actually a T80
 
 PROGLOAD                   .equ 0x100
+
+;
+;      For now - we can actually use this properly
+;
+Z80_MMU_HOOKS              .equ 0