void miiinit(int pa) { u16 v; readr(pa, Rstatus, &v); v = (v & Msana) != 0; seroutf("PHY(0x%X) Auto negotiation ability(0x%X)\r\n", pa, v); readr(pa, Ranadv, &v); writer(pa, Ranadv, defanadv(v)); writer(pa, Rctl, Mcrsan | Mcanen); do { readr(pa, Rctl, &v); } while ((v & Mcrsan) != 0); seroutf("PHY(0x%X) Auto negotiation done\r\n", pa); do { v = 0; readr(pa, Rstatus, &v); } while (!(v & Mstancmp)); seroutf("PHY(0x%X) status(0x%X)\r\n", pa, v); v = 0; readr(pa, Ranlpa, &v); seroutf("PHY(0x%X) auto neg link partner ability(0x%X)\r\n", pa, v); }
void miidbg(int pa) { u16 v, v1; readr(pa, Rphysts, &v); readr(pa, Rmicr, &v1); seroutf("PHY S:I]0x%X,0x%X\r\n", v, v1); }
void miiresetphy(int pa) { u16 v; writer(pa, Rctl, Mcreset); do { readr(pa, Rctl, &v); } while ((v & Mcreset) == 0); writer(pa, Rrbr, Vrbr); }
int main() { int n, q, z = 1, x, y, ans, t, m, i; n = read_int(); q = read_int(); //scanf("%d%d", &n, &q); char s[10]; max = q; for(z = 1; z <= q; z++) { scanf("%s", s); if(strcmp(s, "ColSet") == 0) { //scanf("%d%d", &x, &y); x = read_int(); y = read_int(); if(cs0[x]||cs1[x]) if(cs0[x] > cs1[x])updatec(0, cs0[x], -1); else updatec(1, cs1[x], -1); if(y == 0) { cs0[x] = z; updatec(0, cs0[x], 1); } else { cs1[x] = z; updatec(1, cs1[x], 1); } } else if(strcmp(s, "RowSet") == 0) { //scanf("%d%d", &x, &y); x = read_int(); y = read_int(); if(rs0[x]||rs1[x]) if(rs0[x] > rs1[x])updater(0, rs0[x], -1); else updater(1, rs1[x], -1); if(y == 0) { rs0[x] = z; updater(0, rs0[x], 1); } else { rs1[x] = z; updater(1, rs1[x], 1); } } else if(strcmp(s, "RowQuery") == 0) { //scanf("%d", &x); x = read_int(); if(rs0[x] >= rs1[x]) { ans = readc(1, z) - readc(1, rs0[x]); printf("%d\n", n-ans); } else { ans = readc(0, z) - readc(0, rs1[x]); printf("%d\n", ans); } } else if(strcmp(s, "ColQuery") == 0) { //scanf("%d", &x); x = read_int(); if(cs0[x] >= cs1[x]) { ans = readr(1, z) - readr(1, cs0[x]); printf("%d\n", n-ans); } else { ans = readr(0, z) - readr(0, cs1[x]); printf("%d\n", ans); } } } return 0; }