int kprx (const char *fn, unsigned line, const char *label, unsigned long long x) { begin(); prlabel(fn, line, label); pr("%llx\n", x); end(); return 1; }
int kprd (const char *fn, unsigned line, const char *label, long long d) { begin(); prlabel(fn, line, label); pr("%lld\n", d); end(); return 1; }
int kpru (const char *fn, unsigned line, const char *label, unsigned long long u) { begin(); prlabel(fn, line, label); pr("%llu\n", u); end(); return 1; }
int kprp (const char *fn, unsigned line, const char *label, const void *p) { begin(); prlabel(fn, line, label); pr("%p\n", p); end(); return 1; }
int kprs (const char *fn, unsigned line, const char *label, const void *s) { begin(); prlabel(fn, line, label); pr("%s\n", s); end(); return 1; }
int kprpage (const char *fn, unsigned line, const char *label, const void *page) { begin(); prlabel(fn, line, label); pr("\n"); prpage(page); end(); return 1; }
int kprpage(const char *fn, unsigned line, const char *label, struct page *pg) { void *buf; begin(); prlabel(fn, line, label); pr("\n"); end(); buf = kmap_atomic(pg); prpage(buf); kunmap_atomic(buf); return 1; }
int kprsha (const char *fn, unsigned line, const char *label, void *sha) { unsigned char *s = sha; int i; begin(); prlabel(fn, line, label); for (i = 0; i < 20; i++) { pr("%.2x", s[i]); } pr("\n"); end(); return 1; }
int dowhile() {int jdest; int tst; nlabel++; jdest=nlabel; prlabel(jdest); pexpr(); nlabel++; tst=nlabel; prnum(tst); stmt(); prjump(jdest); prlabel(tst); }
int dodo() {int jdest; int jtemp; nlabel++; jdest=nlabel; prlabel(jdest); stmt(); expect(T_WHILE); pexpr(); nlabel++; jtemp=nlabel; prnum(jtemp); prjump(jdest); prlabel(jtemp); }
int doif() {int jdest; int tst; pexpr(); nlabel++; jdest=nlabel; prnum(jdest); stmt(); if (istoken(T_ELSE)) { nlabel++; tst=nlabel; prjump(tst); prlabel(jdest); stmt(); prlabel(tst); } else prlabel(jdest); }