| plan 9 kernel history: overview | file list | diff list |
1999/0123/mpc/devuart.c (diff list | history)
| 1999/0122/sys/src/9/mpc/devuart.c:297,303 – 1999/0123/sys/src/9/mpc/devuart.c:297,303 (short | long | prev | next) | ||
| 1999/0122 | smc->smcm = BSY|RXB|TXB; /* enable all possible interrupts */ up->smc = smc; smc->smcmr = ((1+8+1-1)<<11)|(2<<4); /* 8-bit, 1 stop, no parity; UART mode */ | |
| 1999/0123 | intrenable(VectorCPIC+4, smcuintr, up, BUSUNKNOWN); | |
| 1999/0122 | smc->smcmr |= 3; /* enable rx/tx */ } | |
| 1999/0122/sys/src/9/mpc/devuart.c:763,772 – 1999/0123/sys/src/9/mpc/devuart.c:763,774 | ||
| 1999/0122 | txstart(Uart *p) { Block *b; | |
| 1999/0123 | int n, flags, s; | |
| 1999/0122 | ||
| 1999/0123 | ||
| 1999/0122 | if(!p->cts || p->blocked || p->txb->status & BDReady) return; | |
| 1999/0123 | ||
| 1999/0122 | if((b = p->outb) == nil){ if((b = qget(p->oq)) == nil) return; | |
| 1999/0122/sys/src/9/mpc/devuart.c:785,792 – 1999/0123/sys/src/9/mpc/devuart.c:787,794 | ||
| 1999/0122 | } } n = BLEN(b); | |
| 1999/0123 | // if(n <= 0) // print("txstart: 0\n"); | |
| 1999/0122 | if(p->bpc > 8){ /* half-word alignment and length if chars are long */ if(PADDR(b->rp)&1){ /* must be even if chars are long */ | |
| 1999/0122/sys/src/9/mpc/devuart.c:810,820 – 1999/0123/sys/src/9/mpc/devuart.c:812,819 | ||
| 1999/0122 | p->txb->addr = PADDR(b->rp); p->txb->length = n; eieio(); | |
| 1999/0123 | p->txb->status = (p->txb->status & BDWrap) | flags | BDReady | BDInt; | |
| 1999/0122 | eieio(); | |
| 1999/0122/sys/src/9/mpc/devuart.c:991,1001 – 1999/0123/sys/src/9/mpc/devuart.c:990,1000 | ||
| 1999/0122 | int dokick; BD *bd; Block *b; | |
| 1999/0123 | /* | |
| 1999/0122 | while(p->rxb != nil && ((bd = &p->rxb[p->rdrx])->status & BDEmpty) == 0){ if(p->mode) framedinput(p, bd); | |
| 1999/0122/sys/src/9/mpc/devuart.c:1006,1011 – 1999/0123/sys/src/9/mpc/devuart.c:1005,1011 | ||
| 1999/0122 | bd->status = (bd->status & BDWrap) | BDEmpty|BDInt; p->rdrx ^= 1; } | |
| 1999/0123 | */ | |
| 1999/0122 | if((bd = p->txb) != nil){ if((bd->status & BDReady) == 0){ ilock(&p->plock); | |