|
@@ -686,6 +686,7 @@ void abcdisk_io_poll(void)
|
|
|
static uint32_t last_sync;
|
|
|
static uint32_t last_timer = -1U;
|
|
|
static uint32_t prev_abc_status = -1U;
|
|
|
+ uint32_t abc_status_change;
|
|
|
|
|
|
uint32_t now = timer_count();
|
|
|
bool need_sync = false;
|
|
@@ -715,7 +716,8 @@ void abcdisk_io_poll(void)
|
|
|
last_timer = now;
|
|
|
}
|
|
|
|
|
|
- if (abc_status != prev_abc_status) {
|
|
|
+ abc_status_change = abc_status ^ prev_abc_status;
|
|
|
+ if (unlikely(abc_status_change)) {
|
|
|
const char *host;
|
|
|
|
|
|
prev_abc_status = abc_status;
|
|
@@ -726,8 +728,9 @@ void abcdisk_io_poll(void)
|
|
|
con_puts(abc_status & ABC_STATUS_800 ? "ABC800" : "ABC80");
|
|
|
con_puts(abc_status & ABC_STATUS_LIVE ? " (online)\n" : " (offline)\n");
|
|
|
|
|
|
- unmount_all = true;
|
|
|
+ unmount_all = !!(abc_status_change & ABC_STATUS_800);
|
|
|
reset_all = true;
|
|
|
+ need_sync = true;
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < CONTROLLER_TYPES; i++) {
|