v68-banked: fix swap handling
authorAlan Cox <alan@linux.intel.com>
Sun, 21 May 2017 21:18:05 +0000 (22:18 +0100)
committerAlan Cox <alan@linux.intel.com>
Sun, 21 May 2017 21:18:05 +0000 (22:18 +0100)
This depends upon the blkdev fixes

Kernel/platform-v68-banked/config.h
Kernel/platform-v68-banked/kernel.def [new file with mode: 0644]
Kernel/platform-v68-banked/tricks.S

index 3f665f9..f5b4a60 100644 (file)
 #define CONFIG_BANK_FIXED
 #define MAX_MAPS       4
 #define MAPBASE                0x00200000
-#define MAP_SIZE       0x00020000
+#define MAP_SIZE       0x0001FC00
 
 #define CONFIG_BANKS   1
-#define PROC_SIZE      MAP_SIZE                        /* 128K */
-
-#define CONFIG_SPLIT_UDATA
-#define UDATA_SIZE     1024
-#define UDATA_BLKS     2
+#define PROC_SIZE      MAP_SIZE                        /* 128K minus udata */
 
 #define PROGBASE       MAPBASE
 #define PROGTOP                (MAPBASE + MAP_SIZE)
-#define SWAP_SIZE      ((MAP_SIZE/512) + 2)            /* 2 for the udata */
+#define SWAP_SIZE      256                             /* 128K including udata */
 #define SWAPBASE       PROGBASE
-#define SWAPTOP                PROGTOP
+#define SWAPTOP                (PROGTOP + 0x400)
 #define MAX_SWAPS      16
 
 #define swap_map(x)    ((uint8_t *)(x))
diff --git a/Kernel/platform-v68-banked/kernel.def b/Kernel/platform-v68-banked/kernel.def
new file mode 100644 (file)
index 0000000..24135b6
--- /dev/null
@@ -0,0 +1 @@
+#define UDATA_STASH    $0021FC00
\ No newline at end of file
index 0a5a96a..212bd77 100644 (file)
@@ -113,6 +113,7 @@ switchin:
        move.l (sp)+,a0
 
         or #$0700,sr
+       bra copyud
 
 not_swapped:
        move.w P_TAB__P_PAGE_OFFSET(a0),d0
@@ -122,6 +123,7 @@ not_swapped:
        move.l P_TAB__P_UDATA_OFFSET(a0),a5
        cmp.l U_DATA__U_PTAB(a5),a0
        beq skip_copyback
+copyud:
        ;
        ;       Recover the udata block
        ;