Unified · Split
| @@ -1,3 +1,5 @@ | ||
| 1 | +20100213 | |
| 2 | + apply saoret.one's changes for thumb [issue 155] | |
| 1 | 3 | 20100205 |
| 2 | 4 | update man pages to replace most references to Styx by 9P |
| 3 | 5 | update man pages to replace references to sys-dial(2) by dial(2) |
| @@ -750,7 +750,7 @@ fsdirread(Chan *c, uchar *va, int count, vlong offset) · 749 unmodified lines | ||
| 750 | 750 | struct stat stbuf; |
| 751 | 751 | char path[MAXPATH], *ep; |
| 752 | 752 | struct dirent *de; |
| 753 | − static char slop[8192]; | |
| 753 | + static uchar slop[8192]; | |
| 754 | 754 | |
| 755 | 755 | i = 0; |
| 756 | 756 | fspath(FS(c)->name, "", path); |
| @@ -951,7 +951,6 @@ static User* · 194 unmodified lines | ||
| 951 | 951 | newuname(char *name) |
| 952 | 952 | { |
| 953 | 953 | struct passwd *p; |
| 954 | − User *u; | |
| 955 | 954 | |
| 956 | 955 | p = getpwnam(name); |
| 957 | 956 | if(p == nil) |
| @@ -963,7 +962,6 @@ static User* · 5 unmodified lines | ||
| 963 | 962 | newuid(int id) |
| 964 | 963 | { |
| 965 | 964 | struct passwd *p; |
| 966 | − User *u; | |
| 967 | 965 | |
| 968 | 966 | p = getpwuid(id); |
| 969 | 967 | if(p == nil) |
| @@ -1010,7 +1008,6 @@ newgname(char *name) · 40 unmodified lines | ||
| 1010 | 1008 | static User* |
| 1011 | 1009 | id2user(User **tab, int id, User* (*get)(int)) |
| 1012 | 1010 | { |
| 1013 | − int i; | |
| 1014 | 1011 | User *u, **h; |
| 1015 | 1012 | |
| 1016 | 1013 | h = hashuser(tab, id); |
| @@ -1 +1 @@ | ||
| 1 | −#define VERSION "Fourth Edition (20100209)" | |
| 1 | +#define VERSION "Fourth Edition (20100213)" | |
| @@ -0,0 +1,119 @@ | ||
| 1 | +Q = 0 | |
| 2 | +N = 1 | |
| 3 | +D = 2 | |
| 4 | +CC = 3 | |
| 5 | +TMP = 11 | |
| 6 | + | |
| 7 | +TEXT save<>(SB), 1, $0 | |
| 8 | + MOVW R(Q), 0(FP) | |
| 9 | + MOVW R(N), 4(FP) | |
| 10 | + MOVW R(D), 8(FP) | |
| 11 | + MOVW R(CC), 12(FP) | |
| 12 | + | |
| 13 | + MOVW R(TMP), R(Q) /* numerator */ | |
| 14 | + MOVW 20(FP), R(D) /* denominator */ | |
| 15 | + CMP $0, R(D) | |
| 16 | + BNE s1 | |
| 17 | + SWI 0 | |
| 18 | +/* MOVW -1(R(D)), R(TMP) /* divide by zero fault */ | |
| 19 | +s1: RET | |
| 20 | + | |
| 21 | +TEXT rest<>(SB), 1, $0 | |
| 22 | + MOVW 0(FP), R(Q) | |
| 23 | + MOVW 4(FP), R(N) | |
| 24 | + MOVW 8(FP), R(D) | |
| 25 | + MOVW 12(FP), R(CC) | |
| 26 | +/* | |
| 27 | + * return to caller | |
| 28 | + * of rest<> | |
| 29 | + */ | |
| 30 | + MOVW 0(R13), R14 | |
| 31 | + ADD $20, R13 | |
| 32 | + B (R14) | |
| 33 | + | |
| 34 | +TEXT div<>(SB), 1, $0 | |
| 35 | + MOVW $32, R(CC) | |
| 36 | +/* | |
| 37 | + * skip zeros 8-at-a-time | |
| 38 | + */ | |
| 39 | +e1: | |
| 40 | + AND.S $(0xff<<24),R(Q), R(N) | |
| 41 | + BNE e2 | |
| 42 | + SLL $8, R(Q) | |
| 43 | + SUB.S $8, R(CC) | |
| 44 | + BNE e1 | |
| 45 | + RET | |
| 46 | +e2: | |
| 47 | + MOVW $0, R(N) | |
| 48 | + | |
| 49 | +loop: | |
| 50 | +/* | |
| 51 | + * shift R(N||Q) left one | |
| 52 | + */ | |
| 53 | + SLL $1, R(N) | |
| 54 | + CMP $0, R(Q) | |
| 55 | + ORR.LT $1, R(N) | |
| 56 | + SLL $1, R(Q) | |
| 57 | + | |
| 58 | +/* | |
| 59 | + * compare numerator to denominator | |
| 60 | + * if less, subtract and set quotent bit | |
| 61 | + */ | |
| 62 | + CMP R(D), R(N) | |
| 63 | + ORR.HS $1, R(Q) | |
| 64 | + SUB.HS R(D), R(N) | |
| 65 | + SUB.S $1, R(CC) | |
| 66 | + BNE loop | |
| 67 | + RET | |
| 68 | + | |
| 69 | +TEXT _div(SB), 1, $16 | |
| 70 | + BL save<>(SB) | |
| 71 | + CMP $0, R(Q) | |
| 72 | + BGE d1 | |
| 73 | + RSB $0, R(Q), R(Q) | |
| 74 | + CMP $0, R(D) | |
| 75 | + BGE d2 | |
| 76 | + RSB $0, R(D), R(D) | |
| 77 | +d0: | |
| 78 | + BL div<>(SB) /* none/both neg */ | |
| 79 | + MOVW R(Q), R(TMP) | |
| 80 | + B out | |
| 81 | +d1: | |
| 82 | + CMP $0, R(D) | |
| 83 | + BGE d0 | |
| 84 | + RSB $0, R(D), R(D) | |
| 85 | +d2: | |
| 86 | + BL div<>(SB) /* one neg */ | |
| 87 | + RSB $0, R(Q), R(TMP) | |
| 88 | + B out | |
| 89 | + | |
| 90 | +TEXT _mod(SB), 1, $16 | |
| 91 | + BL save<>(SB) | |
| 92 | + CMP $0, R(D) | |
| 93 | + RSB.LT $0, R(D), R(D) | |
| 94 | + CMP $0, R(Q) | |
| 95 | + BGE m1 | |
| 96 | + RSB $0, R(Q), R(Q) | |
| 97 | + BL div<>(SB) /* neg numerator */ | |
| 98 | + RSB $0, R(N), R(TMP) | |
| 99 | + B out | |
| 100 | +m1: | |
| 101 | + BL div<>(SB) /* pos numerator */ | |
| 102 | + MOVW R(N), R(TMP) | |
| 103 | + B out | |
| 104 | + | |
| 105 | +TEXT _divu(SB), 1, $16 | |
| 106 | + BL save<>(SB) | |
| 107 | + BL div<>(SB) | |
| 108 | + MOVW R(Q), R(TMP) | |
| 109 | + B out | |
| 110 | + | |
| 111 | +TEXT _modu(SB), 1, $16 | |
| 112 | + BL save<>(SB) | |
| 113 | + BL div<>(SB) | |
| 114 | + MOVW R(N), R(TMP) | |
| 115 | + B out | |
| 116 | + | |
| 117 | +out: | |
| 118 | + BL rest<>(SB) | |
| 119 | + B out | |
| @@ -10,3 +10,4 @@ TARGFILES=\ · 9 unmodified lines | ||
| 10 | 10 | strchr-thumb.$O\ |
| 11 | 11 | vlop-thumb.$O\ |
| 12 | 12 | vlrt-thumb.$O\ |
| 13 | + div-thumb.$O\ | |
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | TARGMODEL= Inferno |
| 2 | 2 | TARGSHTYPE= sh |
| 3 | 3 | CPUS= arm |
| 4 | −OBJDIR= Inferno/arm #force everything to point to inferno directory | |
| 4 | +OBJDIR= Inferno/thumb #force everything to point to inferno directory | |
| 5 | 5 | |
| 6 | 6 | O= t |
| 7 | 7 | OS= 5t |
| @@ -11,10 +11,10 @@ ARFLAGS= vu · 3 unmodified lines | ||
| 11 | 11 | ARPREFIX= |
| 12 | 12 | |
| 13 | 13 | AS= 5a |
| 14 | −ASFLAGS= | |
| 14 | +ASFLAGS= -t | |
| 15 | 15 | |
| 16 | 16 | CC= tc |
| 17 | −CFLAGS= -wFV -I$ROOT/Inferno/arm/include -I$ROOT/include | |
| 17 | +CFLAGS= -wFV -I$ROOT/Inferno/thumb/include -I$ROOT/include | |
| 18 | 18 | ANSICPP= -p |
| 19 | 19 | |
| 20 | 20 | LD= 5l |
| @@ -9,7 +9,7 @@ LIBFILES=${LIBS:%=$ROOT/Inferno/$OBJTYPE/lib/lib%.a} · 8 unmodified lines | ||
| 9 | 9 | CLEANEXTRA= |
| 10 | 10 | |
| 11 | 11 | %.$O: %.s |
| 12 | − $AS $stem.s | |
| 12 | + $AS $ASFLAGS $stem.s | |
| 13 | 13 | |
| 14 | 14 | %.$O: %.c |
| 15 | 15 | $CC $CFLAGS $stem.c |
| @@ -266,7 +266,7 @@ span(void) · 265 unmodified lines | ||
| 266 | 266 | |
| 267 | 267 | loop: |
| 268 | 268 | passes++; |
| 269 | − if(passes > 100){ | |
| 269 | + if(passes > 150){ | |
| 270 | 270 | diag("span looping !"); |
| 271 | 271 | errorexit(); |
| 272 | 272 | } |