ref: a87ce74d606e1384f43b0afb39e1f17e2e635a1c
parent: 9eb192f586316361a78cf399b410716ee20ed132
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Nov 7 12:58:52 EST 2021
kernel/rdb: need to reenable polling mode on the uart, remove cruft
--- a/sys/src/9/port/rdb.c
+++ b/sys/src/9/port/rdb.c
@@ -6,23 +6,6 @@
#include "io.h"
#include "ureg.h"
-#define DBG if(0)scrprint
-#pragma varargck argpos scrprint 1
-static Ureg ureg;
-
-static void
-scrprint(char *fmt, ...)
-{- char buf[128];
- va_list va;
- int n;
-
- va_start(va, fmt);
- n = vseprint(buf, buf+sizeof buf, fmt, va)-buf;
- va_end(va);
- putstrn(buf, n);
-}
-
static char*
getline(void)
{@@ -29,28 +12,21 @@
static char buf[128];
int i, c;
- for(;;){- for(i=0; i<nelem(buf) && (c=uartgetc()) != '\n'; i++){- DBG("%c...", c);- buf[i] = c;
- }
-
- if(i < nelem(buf)){- buf[i] = 0;
- return buf;
- }
- }
+ for(i = 0; i < sizeof(buf)-1 && (c=uartgetc()) != '\n'; i++)
+ buf[i] = c;
+ buf[i] = 0;
+ return buf;
}
static void*
addr(char *s, Ureg *ureg, char **p)
{- ulong a;
+ uvlong a;
- a = strtoul(s, p, 16);
+ a = strtoull(s, p, 16);
if(a < sizeof(Ureg))
return ((uchar*)ureg)+a;
- return (void*)a;
+ return (void*)(uintptr)a;
}
static void
@@ -59,9 +35,19 @@
uchar *a;
char *p, *req;
- serialoq = nil; /* turn off serial console */
+ if(consuart == nil)
+ return;
+
+ if(serialoq != nil){+ qhangup(serialoq, nil);
+ if(consuart->phys->disable != nil)
+ consuart->phys->disable(consuart);
+ if(consuart->phys->enable != nil)
+ consuart->phys->enable(consuart, 0);
+ serialoq = nil;
+ }
kprintoq = nil; /* turn off /dev/kprint if active */
-// scrprint("Plan 9 debugger\n");+
iprint("Edebugger reset\n"); for(;;){req = getline();
@@ -68,9 +54,8 @@
switch(*req){case 'r':
a = addr(req+1, ureg, nil);
- DBG("read %p\n", a);- iprint("R%.8lux %.2ux %.2ux %.2ux %.2ux\n",- strtoul(req+1, 0, 16), a[0], a[1], a[2], a[3]);
+ iprint("R%.8zux %.2ux %.2ux %.2ux %.2ux\n",+ (uintptr)a, a[0], a[1], a[2], a[3]);
break;
case 'w':
@@ -78,22 +63,8 @@
*(ulong*)a = strtoul(p, nil, 16);
iprint("W\n");break;
-/*
- * case Tmput:
- n = min[4];
- if(n > 4){- mesg(Rerr, Ecount);
- break;
- }
- a = addr(min+0);
- scrprint("mput %.8lux\n", a);- memmove(a, min+5, n);
- mesg(Rmput, mout);
- break;
- *
- */
+
default:
- DBG("unknown %c\n", *req); iprint("Eunknown message\n");break;
}
--
⑨