commit e5c26b01f70303f3322ac98d670ef886a62ac38a from: rsc date: Mon Sep 20 15:08:57 2004 UTC various forgotten files commit - dcc9531c5a8d5d43d71060f8975d592c7598b349 commit + e5c26b01f70303f3322ac98d670ef886a62ac38a blob - 469aea46b882577c00dc6489d036e2c461e28694 blob + 51e733ab720f6b8825b0fcfbc399cc9ed5ff17b1 --- src/cmd/9term/9term.c +++ src/cmd/9term/9term.c @@ -876,6 +876,20 @@ key(Rune r) paste(t.snarf, t.nsnarf, 0); if(scrolling) show(t.q0); + return; + } + + switch(r) { + case 0x03: /* ^C: send interrupt */ + case 0x7F: /* DEL: send interrupt */ + t.qh = t.q0 = t.q1 = t.nr; + show(t.q0); +{int x; x=tcgetpgrp(rcfd); +print("postnote %d pgrp %d\n", rcpid, x); + postnote(PNGROUP, x, "interrupt"); +if(x >= 2) killpg(x, 2); +} + // write(rcfd, "\x7F", 1); return; } @@ -898,12 +912,6 @@ key(Rune r) snarf(); switch(r) { - case 0x03: /* ^C: send interrupt */ - case 0x7F: /* DEL: send interrupt */ - t.qh = t.q0 = t.q1 = t.nr; - show(t.q0); - write(rcfd, "\x7F", 1); - break; case 0x06: /* ^F: file name completion */ case Kins: /* Insert: file name completion */ rp = namecomplete(); blob - 079e86d6d0a2058851884f94c7f127dd10307e46 blob + 81ad960f2a3a8ac3ddb25f437cc857f46959d361 --- src/cmd/rio/menu.c +++ src/cmd/rio/menu.c @@ -138,6 +138,9 @@ spawn(ScreenInfo *s) close(ConnectionNumber(dpy)); if (s->display[0] != '\0') putenv(s->display); + signal(SIGINT, SIG_DFL); + signal(SIGTERM, SIG_DFL); + signal(SIGHUP, SIG_DFL); if (termprog != NULL) { execl(shell, shell, "-c", termprog, 0); fprintf(stderr, "rio: exec %s", shell); blob - /dev/null blob + b4bf6980febc2fe8bffb4264c4e09d49578d2f50 (mode 644) --- /dev/null +++ src/lib9/getcallerpc-power.c @@ -0,0 +1,11 @@ +#include + +ulong +getcallerpc(void *x) +{ + ulong *lp; + + lp = x; + + return lp[-1]; +} blob - /dev/null blob + 2ed71d47344f032a93b6a02576f836772650c493 (mode 644) --- /dev/null +++ src/lib9/tas-power.c @@ -0,0 +1,42 @@ +#include "u.h" +#include "libc.h" + +/* + * first argument (l) is in r3 at entry. + * r3 contains return value upon return. + */ +int +_tas(int *x) +{ + int v; + int tmp, tmp2, tmp3; + + /* + * this __asm__ works with gcc on linux + */ + __asm__("\n sync\n" + " li %1,0\n" + " mr %2,%4 /* &x->val */\n" + " lis %3,0xdead /* assemble constant 0xdeaddead */\n" + " ori %3,%3,0xdead /* \" */\n" + "tas1:\n" + " dcbf %2,%1 /* cache flush; \"fix for 603x bug\" */\n" + " lwarx %0,%2,%1 /* v = x->val with reservation */\n" + " cmp cr0,0,%0,%1 /* v == 0 */\n" + " bne tas0\n" + " stwcx. %3,%2,%1 /* if (x->val same) x->val = 0xdeaddead */\n" + " bne tas1\n" + "tas0:\n" + " sync\n" + " isync\n" + : "=r" (v), "=&r" (tmp), "=&r"(tmp2), "=&r"(tmp3) + : "r" (x) + : "cr0", "memory" + ); + switch(v) { + case 0: return 0; + case 0xdeaddead: return 1; + default: fprint(2, "tas: corrupted 0x%lux\n", v); + } + return 0; +} blob - /dev/null blob + 00bfec3e155b48d2d0f43acb2838d34db5848e5a (mode 644) --- /dev/null +++ src/libthread/asm-Linux-power.s @@ -0,0 +1,80 @@ +/* get FPR and VR use flags with sc 0x7FF3 */ +/* get vsave with mfspr reg, 256 */ + +.text +.align 2 + +.globl _setlabel + +_setlabel: /* xxx: instruction scheduling */ + mflr 0 + mfcr 5 + mfctr 6 + mfxer 7 + stw 0, 0*4(3) + stw 5, 1*4(3) + stw 6, 2*4(3) + stw 7, 3*4(3) + + stw 1, 4*4(3) + stw 2, 5*4(3) + + stw 13, (0+6)*4(3) /* callee-save GPRs */ + stw 14, (1+6)*4(3) /* xxx: block move */ + stw 15, (2+6)*4(3) + stw 16, (3+6)*4(3) + stw 17, (4+6)*4(3) + stw 18, (5+6)*4(3) + stw 19, (6+6)*4(3) + stw 20, (7+6)*4(3) + stw 21, (8+6)*4(3) + stw 22, (9+6)*4(3) + stw 23, (10+6)*4(3) + stw 24, (11+6)*4(3) + stw 25, (12+6)*4(3) + stw 26, (13+6)*4(3) + stw 27, (14+6)*4(3) + stw 28, (15+6)*4(3) + stw 29, (16+6)*4(3) + stw 30, (17+6)*4(3) + stw 31, (18+6)*4(3) + + li 3, 0 /* return */ + blr + +.globl _gotolabel + +_gotolabel: + lwz 13, (0+6)*4(3) /* callee-save GPRs */ + lwz 14, (1+6)*4(3) /* xxx: block move */ + lwz 15, (2+6)*4(3) + lwz 16, (3+6)*4(3) + lwz 17, (4+6)*4(3) + lwz 18, (5+6)*4(3) + lwz 19, (6+6)*4(3) + lwz 20, (7+6)*4(3) + lwz 21, (8+6)*4(3) + lwz 22, (9+6)*4(3) + lwz 23, (10+6)*4(3) + lwz 24, (11+6)*4(3) + lwz 25, (12+6)*4(3) + lwz 26, (13+6)*4(3) + lwz 27, (14+6)*4(3) + lwz 28, (15+6)*4(3) + lwz 29, (16+6)*4(3) + lwz 30, (17+6)*4(3) + lwz 31, (18+6)*4(3) + + lwz 1, 4*4(3) + lwz 2, 5*4(3) + + lwz 0, 0*4(3) + mtlr 0 + lwz 0, 1*4(3) + mtcr 0 /* mtcrf 0xFF, r0 */ + lwz 0, 2*4(3) + mtctr 0 + lwz 0, 3*4(3) + mtxer 0 + li 3, 1 + blr blob - /dev/null blob + b0a14e6f26e62ed1db7f609ff9bedeb44f1ca697 (mode 644) --- /dev/null +++ src/libthread/power.c @@ -0,0 +1,40 @@ +#include "threadimpl.h" + +static void +launcherpower(int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, + void (*f)(void *arg), void *arg) +{ + (*f)(arg); + threadexits(nil); +} + +void +_threadinitstack(Thread *t, void (*f)(void*), void *arg) +{ + ulong *tos, *stk; + + tos = (ulong*)&t->stk[t->stksize&~7]; + stk = tos; + --stk; + --stk; + --stk; + --stk; + *--stk = (ulong)arg; + *--stk = (ulong)f; + t->sched.pc = (ulong)launcherpower+LABELDPC; + t->sched.sp = ((ulong)stk)-8; + *((ulong *)t->sched.sp) = 0; +} + +void +_threadinswitch(int enter) +{ + USED(enter); +} + +void +_threadstacklimit(void *addr, void *addr2) +{ + USED(addr); +} + blob - 60a8854ba959fbf3006da4e1188b4ee28239841d blob + 81cc34394e2c747d9008341651f765687f752a50 --- src/libthread/sched.c +++ src/libthread/sched.c @@ -26,7 +26,6 @@ _schedinit(void *arg) Proc *p; Thread *t; extern void ignusr1(int), _threaddie(int); - ignusr1(1); signal(SIGTERM, _threaddie); p = arg; blob - /dev/null blob + 0cbb4be93fd1d700622e04cd7762fe66eec5c251 (mode 644) --- /dev/null +++ src/libthread/tfork.c @@ -0,0 +1,23 @@ +#include +#include +#include + +Channel *c; + +void +f(void *v) +{ + recvp(c); +} + +void +threadmain(int argc, char **argv) +{ + int i; + + c = chancreate(sizeof(ulong), 0); + for(i=0;; i++){ + print("%d\n", i); + proccreate(f, nil, 8192); + } +} blob - /dev/null blob + c1dc4109511070255ec892d513d471414ffc1c00 (mode 644) --- /dev/null +++ unix/make/Make.Linux-power @@ -0,0 +1,6 @@ +CC=gcc +CFLAGS+=-Wall -Wno-missing-braces -Wno-parentheses -Wno-switch -O2 -g -c -I. +O=o +AR=ar +ARFLAGS=rvc +NAN=nan64.$O