diff --git a/.clang-format b/.clang-format index 7dced3479..4e2fb62b5 100644 --- a/.clang-format +++ b/.clang-format @@ -1,12 +1,17 @@ --- -BasedOnStyle: WebKit -AllowShortLoopsOnASingleLine: 'false' +AlignAfterOpenBracket: AlwaysBreak +AllowShortFunctionsOnASingleLine: false +AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: false +BasedOnStyle: WebKit +BinPackArguments: true +BinPackParameters: false BreakBeforeBraces: Allman +ColumnLimit: 100 IndentCaseLabels: 'true' PointerAlignment: Left +SortIncludes: false TabWidth: '4' UseTab: ForIndentation -SortIncludes: false ... diff --git a/lang/m2/include/libm2.h b/lang/m2/include/libm2.h new file mode 100644 index 000000000..4ad303b66 --- /dev/null +++ b/lang/m2/include/libm2.h @@ -0,0 +1,103 @@ +#ifndef LIBM2_H +#define LIBM2_H + +#include + +struct array_descr +{ + int lbound; + int n_elts_min_one; + unsigned size; +}; + +struct int_range_descr +{ + int low, high; +}; + +struct uint_range_descr +{ + unsigned int low, high; +}; + +struct long_range_descr +{ + long low, high; +}; + +struct ulong_range_descr +{ + unsigned long low, high; +}; + +struct stack_descr +{ + char* addr; + int low; + unsigned int highminlow; + unsigned int size; +}; + +struct proc +{ + unsigned size; /* size of saved stackframe(s) */ + int (*proc)(void); /* address of coroutine procedure */ + char* brk; /* stack break of this coroutine */ +}; + +extern void (*handler)(int); +extern char** argv; +extern int argc; +extern char* MainLB; + +extern double absd(double i); +extern int CallAtEnd(void (*p)(void)); +extern int absi(int i); +extern int dvi(int j, int i); +extern int rmi(int j, int i); +extern int sigtrp(int trapno, int signo); +extern int stackprio(unsigned n); +extern int topsave(void* brkpos, struct proc* proc); +extern long absl(long i); +extern long dvil(long j, long i); +extern long rmil(long j, long i); +extern size_t new_stackptr(struct stack_descr* pdscr, int a); +extern unsigned int topsize(void* brkpos); +extern void SIG(void (*)(int)); +extern void StringAssign(int dstsiz, int srcsiz, register char* dstaddr, register char* srcaddr); +extern void TRP(int trapno); +extern void _Arguments_(void); +extern void _SYSTEM__NEWPROCESS(int (*p)(void), struct proc* a, unsigned n, struct proc** p1); +extern void _SYSTEM__TRANSFER(struct proc** a, struct proc** b); +extern void _cleanup(void); +extern void adduchk(unsigned a, unsigned b); +extern void blockmove(size_t siz, char* dst, char* src); +extern void cap(unsigned u); +extern void catch (int trapno); +extern void copy_array(char* pp, int a); +extern void halt(void); +extern void init(void); +extern void killbss(void); +extern void load(size_t siz, register char* addr, int p); +extern void muluchk(unsigned a, unsigned b); +extern void rcka(struct array_descr* descr, int indx); +extern void rcki(struct int_range_descr* descr, int val); +extern void rckil(struct long_range_descr* descr, long val); +extern void rcku(struct uint_range_descr* descr, unsigned val); +extern void rckul(struct ulong_range_descr* descr, unsigned long val); +extern void store(size_t siz, register char* addr, int p); +extern void subuchk(unsigned a, unsigned b); +extern void topload(struct proc* proc); +extern void unstackprio(unsigned n); + +/* PROCEDURE Argv(argnum: CARDINAL; VAR argument: ARRAY OF CHAR): CARDINAL; */ +extern unsigned _Arguments__Argv(int n, char* argument, int l, unsigned int u, int s); + +/* PROCEDURE GetEnv(name: ARRAY OF CHAR; VAR value: ARRAY OF CHAR): CARDINAL; */ +extern unsigned _Arguments__GetEnv( + char* name, int nn, unsigned int nu, int ns, char* value, int l, unsigned int u, int s); + +/* PROCEDURE Message(str: ARRAY OF CHAR); */ +extern void _Traps__Message(char* str, int nn, unsigned int nu, int ns); + +#endif diff --git a/lang/m2/include/m2_traps.h b/lang/m2/include/m2_traps.h index a09190037..c8fd625b6 100644 --- a/lang/m2/include/m2_traps.h +++ b/lang/m2/include/m2_traps.h @@ -6,11 +6,11 @@ /* Modula-2 runtime errors */ -#define M2_TOOLARGE 64 /* stack of process too large */ -#define M2_TOOMANY 65 /* too many nested traps & handlers */ -#define M2_NORESULT 66 /* no RETURN from procedure function */ -#define M2_UOVFL 67 /* cardinal overflow */ -#define M2_FORCH 68 /* FOR-loop control variable changed */ -#define M2_UUVFL 69 /* cardinal underflow */ -#define M2_INTERNAL 70 /* internal error, should not happen */ -#define M2_UNIXSIG 71 /* unix signal */ +#define M2_TOOLARGE 64 /* stack of process too large */ +#define M2_TOOMANY 65 /* too many nested traps & handlers */ +#define M2_NORESULT 66 /* no RETURN from procedure function */ +#define M2_UOVFL 67 /* cardinal overflow */ +#define M2_FORCH 68 /* FOR-loop control variable changed */ +#define M2_UUVFL 69 /* cardinal underflow */ +#define M2_INTERNAL 70 /* internal error, should not happen */ +#define M2_UNIXSIG 71 /* unix signal */ diff --git a/lang/m2/libm2/Arguments.c b/lang/m2/libm2/Arguments.c index 91cd1412c..b302b0048 100644 --- a/lang/m2/libm2/Arguments.c +++ b/lang/m2/libm2/Arguments.c @@ -8,66 +8,65 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ +#include "libm2.h" extern char **argv, **environ; extern int argc; unsigned int _Arguments__Argc; -static char * -findname(s1, s2) -register char *s1, *s2; +static char* findname(char* s1, char* s2) { - while (*s1 == *s2++) s1++; - if (*s1 == '\0' && *(s2-1) == '=') return s2; + while (*s1 == *s2++) + s1++; + if (*s1 == '\0' && *(s2 - 1) == '=') + return s2; return 0; } -static unsigned int -scopy(src, dst, max) - register char *src, *dst; - unsigned int max; +static unsigned int scopy(char* src, char* dst, unsigned int max) { register unsigned int i = 0; - while (*src && i <= max) { + while (*src && i <= max) + { i++; *dst++ = *src++; } - if (i <= max) { + if (i <= max) + { *dst = '\0'; - return i+1; + return i + 1; } - while (*src++) i++; + while (*src++) + i++; return i + 1; } -_Arguments_() +void _Arguments_(void) { _Arguments__Argc = argc; } -unsigned -_Arguments__Argv(n, argument, l, u, s) - unsigned int u; - char *argument; +unsigned int _Arguments__Argv(int n, char* argument, int l, unsigned int u, int s) { - if (n >= argc) return 0; + if (n >= argc) + return 0; return scopy(argv[n], argument, u); } -unsigned -_Arguments__GetEnv(name, nn, nu, ns, value, l, u, s) - char *name, *value; - unsigned int nu, u; +unsigned int _Arguments__GetEnv( + char* name, int nn, unsigned int nu, int ns, char* value, int l, unsigned int u, int s) { - register char **p = environ; - register char *v = 0; + register char** p = environ; + register char* v = 0; - while (*p && !(v = findname(name, *p++))) { + while (*p && !(v = findname(name, *p++))) + { /* nothing */ } - if (!v) return 0; + if (!v) + return 0; return scopy(v, value, u); } diff --git a/lang/m2/libm2/SYSTEM.c b/lang/m2/libm2/SYSTEM.c index 6a725164c..31de12dd4 100644 --- a/lang/m2/libm2/SYSTEM.c +++ b/lang/m2/libm2/SYSTEM.c @@ -10,49 +10,45 @@ */ /* - An implementation of the Modula-2 NEWPROCESS and TRANSFER facilities - using the topsize, topsave, and topload facilities. - For each coroutine, a proc structure is built. For the main routine, - a static space is declared to save its stack. For the other coroutines, - the user specifies this space. + An implementation of the Modula-2 NEWPROCESS and TRANSFER facilities + using the topsize, topsave, and topload facilities. + For each coroutine, a proc structure is built. For the main routine, + a static space is declared to save its stack. For the other coroutines, + the user specifies this space. */ +#include +#include "libm2.h" #include -#define MAXMAIN 2048 +#define MAXMAIN 2048 -struct proc { - unsigned size; /* size of saved stackframe(s) */ - int (*proc)(); /* address of coroutine procedure */ - char *brk; /* stack break of this coroutine */ -}; +static struct proc mainproc[MAXMAIN / sizeof(struct proc) + 1]; -extern unsigned topsize(); +static struct proc* curproc = 0; /* current coroutine */ +extern char* MainLB; /* stack break of main routine */ -static struct proc mainproc[MAXMAIN/sizeof(struct proc) + 1]; - -static struct proc *curproc = 0;/* current coroutine */ -extern char *MainLB; /* stack break of main routine */ - -_SYSTEM__NEWPROCESS(p, a, n, p1) - int (*p)(); /* coroutine procedure */ - struct proc *a; /* pointer to area for saved stack-frame */ - unsigned n; /* size of this area */ - struct proc **p1; /* where to leave coroutine descriptor, - in this implementation the address of - the area for saved stack-frame(s) */ +void _SYSTEM__NEWPROCESS( + int (*p)(void) /* coroutine procedure */, + struct proc* a /* pointer to area for saved stack-frame */, + unsigned int n /* size of this area */, + struct proc** p1 /* where to leave coroutine descriptor, + in this implementation the address of + the area for saved stack-frame(s) */ + ) { /* This procedure creates a new coroutine, but does not - transfer control to it. The routine "topsize" will compute the - stack break, which will be the local base of this routine. - Notice that we can do this because we do not need the stack - above this point for this coroutine. In Modula-2, coroutines - must be level 0 procedures without parameters. + transfer control to it. The routine "topsize" will compute the + stack break, which will be the local base of this routine. + Notice that we can do this because we do not need the stack + above this point for this coroutine. In Modula-2, coroutines + must be level 0 procedures without parameters. */ - char *brk = 0; + char* brk = 0; unsigned sz = topsize(&brk); - if (sz + sizeof(struct proc) > n) { + if (sz + sizeof(struct proc) > n) + { /* not enough space */ TRP(M2_TOOLARGE); } @@ -60,10 +56,11 @@ _SYSTEM__NEWPROCESS(p, a, n, p1) a->proc = p; a->brk = brk; *p1 = a; - if (topsave(brk, a+1)) + if (topsave(brk, a + 1)) /* stack frame saved; now just return */ ; - else { + else + { /* We get here through the first transfer to the coroutine created above. This also means that curproc is now set to this coroutine. @@ -76,16 +73,16 @@ _SYSTEM__NEWPROCESS(p, a, n, p1) } } -_SYSTEM__TRANSFER(a, b) - struct proc **a, **b; +void _SYSTEM__TRANSFER(struct proc** a, struct proc** b) { /* transfer from one coroutine to another, saving the current - descriptor in the space indicated by "a", and transfering to - the coroutine in descriptor "b". + descriptor in the space indicated by "a", and transfering to + the coroutine in descriptor "b". */ unsigned size; - if (! curproc) { + if (!curproc) + { /* the current coroutine is the main process; initialize a coroutine descriptor for it ... */ @@ -93,21 +90,24 @@ _SYSTEM__TRANSFER(a, b) mainproc[0].size = sizeof(mainproc); curproc = &mainproc[0]; } - *a = curproc; /* save current descriptor in "a" */ - if (*b == curproc) { + *a = curproc; /* save current descriptor in "a" */ + if (*b == curproc) + { /* transfer to itself is a no-op */ return; } size = topsize(&(curproc->brk)); - if (size + sizeof(struct proc) > curproc->size) { + if (size + sizeof(struct proc) > curproc->size) + { TRP(M2_TOOLARGE); } - if (topsave(curproc->brk, curproc+1)) { + if (topsave(curproc->brk, curproc + 1)) + { /* stack top saved. Now restore context of target coroutine */ curproc = *b; - topload(curproc+1); + topload(curproc + 1); /* we never get here ... */ } /* but we do get here, when a transfer is done to the coroutine in "a". diff --git a/lang/m2/libm2/StrAss.c b/lang/m2/libm2/StrAss.c index 3eb1c5861..d5267b5b7 100644 --- a/lang/m2/libm2/StrAss.c +++ b/lang/m2/libm2/StrAss.c @@ -5,19 +5,22 @@ /* Module: assign string to character array, with possible 0-byte - extension + extension Author: Ceriel J.H. Jacobs Version: $Id$ */ -StringAssign(dstsiz, srcsiz, dstaddr, srcaddr) - register char *dstaddr, *srcaddr; +#include "libm2.h" + +void StringAssign(int dstsiz, int srcsiz, char* dstaddr, char* srcaddr) { - while (srcsiz > 0) { + while (srcsiz > 0) + { *dstaddr++ = *srcaddr++; srcsiz--; dstsiz--; } - if (dstsiz > 0) { + if (dstsiz > 0) + { *dstaddr = 0; } } diff --git a/lang/m2/libm2/Terminal.mod b/lang/m2/libm2/Terminal.mod index 80f8d4136..e00f39ad4 100644 --- a/lang/m2/libm2/Terminal.mod +++ b/lang/m2/libm2/Terminal.mod @@ -15,14 +15,14 @@ IMPLEMENTATION MODULE Terminal; *) FROM SYSTEM IMPORT ADR; #ifdef __USG - FROM Unix IMPORT read, write, open, fcntl; + FROM Unix IMPORT read, write, fcntl; #else - FROM Unix IMPORT read, write, open, ioctl; + FROM Unix IMPORT read, write, ioctl; #endif VAR fildes, fdout: INTEGER; unreadch: CHAR; unread: BOOLEAN; - tty: ARRAY[0..8] OF CHAR; + (* tty: ARRAY[0..8] OF CHAR; *) PROCEDURE Read(VAR ch: CHAR); BEGIN @@ -115,7 +115,7 @@ BEGIN *) (* dtrg: changed so that instead of opening /dev/tty, fd 0 is always used. *) (* kernigh: sent output to fd 1 *) - tty := "stdio"; + (* tty := "stdio"; *) fildes := 0; fdout := 1; unread := FALSE; diff --git a/lang/m2/libm2/absd.c b/lang/m2/libm2/absd.c index c844d429c..4c6b34bff 100644 --- a/lang/m2/libm2/absd.c +++ b/lang/m2/libm2/absd.c @@ -8,10 +8,10 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ +#include "libm2.h" + #ifndef NOFLOAT -double -absd(i) - double i; +double absd(double i) { return i >= 0 ? i : -i; } diff --git a/lang/m2/libm2/absi.c b/lang/m2/libm2/absi.c index 1860e2517..092b504a0 100644 --- a/lang/m2/libm2/absi.c +++ b/lang/m2/libm2/absi.c @@ -8,8 +8,9 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ +#include "libm2.h" -absi(i) +int absi(int i) { return i >= 0 ? i : -i; } diff --git a/lang/m2/libm2/absl.c b/lang/m2/libm2/absl.c index a685b8c97..e9107a880 100644 --- a/lang/m2/libm2/absl.c +++ b/lang/m2/libm2/absl.c @@ -8,9 +8,9 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ -long -absl(i) - long i; +#include "libm2.h" + +long absl(long i) { return i >= 0 ? i : -i; } diff --git a/lang/m2/libm2/blockmove.c b/lang/m2/libm2/blockmove.c index 86833714d..0f2dfdaa0 100644 --- a/lang/m2/libm2/blockmove.c +++ b/lang/m2/libm2/blockmove.c @@ -8,16 +8,11 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ +#include +#include "libm2.h" -#if _EM_WSIZE==_EM_PSIZE -typedef unsigned pcnt; -#else -typedef unsigned long pcnt; -#endif - -blockmove(siz, dst, src) - pcnt siz; - register char *dst, *src; +void blockmove(size_t siz, char* dst, char* src) { - while (siz--) *dst++ = *src++; + while (siz--) + *dst++ = *src++; } diff --git a/lang/m2/libm2/cap.c b/lang/m2/libm2/cap.c index feefc9c9c..32da6b6e8 100644 --- a/lang/m2/libm2/cap.c +++ b/lang/m2/libm2/cap.c @@ -8,11 +8,12 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ +#include "libm2.h" -cap(u) - unsigned u; +void cap(unsigned int u) { - register unsigned *p = &u; + register unsigned* p = &u; - if (*p >= 'a' && *p <= 'z') *p += 'A'-'a'; + if (*p >= 'a' && *p <= 'z') + *p += 'A' - 'a'; } diff --git a/lang/m2/libm2/catch.c b/lang/m2/libm2/catch.c index 76e818105..7a5511c50 100644 --- a/lang/m2/libm2/catch.c +++ b/lang/m2/libm2/catch.c @@ -11,89 +11,96 @@ #include #include #include +#include "libm2.h" -static struct errm { - int errno; - char *errmes; -} errors[] = { - { EARRAY, "array bound error"}, - { ERANGE, "range bound error"}, - { ESET, "set bound error"}, - { EIOVFL, "integer overflow"}, - { EFOVFL, "real overflow"}, - { EFUNFL, "real underflow"}, - { EIDIVZ, "divide by 0"}, - { EFDIVZ, "divide by 0.0"}, - { EIUND, "undefined integer"}, - { EFUND, "undefined real"}, - { ECONV, "conversion error"}, - - { ESTACK, "stack overflow"}, - { EHEAP, "heap overflow"}, - { EILLINS, "illegal instruction"}, - { EODDZ, "illegal size argument"}, - { ECASE, "case error"}, - { EMEMFLT, "addressing non existent memory"}, - { EBADPTR, "bad pointer used"}, - { EBADPC, "program counter out of range"}, - { EBADLAE, "bad argument of lae"}, - { EBADMON, "bad monitor call"}, - { EBADLIN, "argument if LIN too high"}, - { EBADGTO, "GTO descriptor error"}, - - { M2_TOOLARGE, "stack size of process too large"}, - { M2_TOOMANY, "too many nested traps + handlers"}, - { M2_NORESULT, "no RETURN from function procedure"}, - { M2_UOVFL, "cardinal overflow"}, - { M2_FORCH, "(warning) FOR-loop control variable was changed in the body"}, - { M2_UUVFL, "cardinal underflow"}, - { M2_INTERNAL, "internal error; ask an expert for help"}, - { M2_UNIXSIG, "got a unix signal"}, - { -1, 0} -}; - -catch(trapno) - int trapno; +static struct errm { - register struct errm *ep = &errors[0]; - char *errmessage; + int errno; + char* errmes; +} errors[] = { { EARRAY, "array bound error" }, + { ERANGE, "range bound error" }, + { ESET, "set bound error" }, + { EIOVFL, "integer overflow" }, + { EFOVFL, "real overflow" }, + { EFUNFL, "real underflow" }, + { EIDIVZ, "divide by 0" }, + { EFDIVZ, "divide by 0.0" }, + { EIUND, "undefined integer" }, + { EFUND, "undefined real" }, + { ECONV, "conversion error" }, + + { ESTACK, "stack overflow" }, + { EHEAP, "heap overflow" }, + { EILLINS, "illegal instruction" }, + { EODDZ, "illegal size argument" }, + { ECASE, "case error" }, + { EMEMFLT, "addressing non existent memory" }, + { EBADPTR, "bad pointer used" }, + { EBADPC, "program counter out of range" }, + { EBADLAE, "bad argument of lae" }, + { EBADMON, "bad monitor call" }, + { EBADLIN, "argument if LIN too high" }, + { EBADGTO, "GTO descriptor error" }, + + { M2_TOOLARGE, "stack size of process too large" }, + { M2_TOOMANY, "too many nested traps + handlers" }, + { M2_NORESULT, "no RETURN from function procedure" }, + { M2_UOVFL, "cardinal overflow" }, + { M2_FORCH, "(warning) FOR-loop control variable was changed in the body" }, + { M2_UUVFL, "cardinal underflow" }, + { M2_INTERNAL, "internal error; ask an expert for help" }, + { M2_UNIXSIG, "got a unix signal" }, + { -1, 0 } }; + +void catch (int trapno) +{ + register struct errm* ep = &errors[0]; + char* errmessage; char buf[20]; register char *p, *s; - while (ep->errno != trapno && ep->errmes != 0) ep++; - if (p = ep->errmes) { - while (*p) p++; - _Traps__Message(ep->errmes, 0, (int) (p - ep->errmes), 1); + while (ep->errno != trapno && ep->errmes != 0) + ep++; + if (p = ep->errmes) + { + while (*p) + p++; + _Traps__Message(ep->errmes, 0, (int)(p - ep->errmes), 1); } - else { + else + { int i = trapno; static char q[] = "error number xxxxxxxxxxxxx"; p = &q[13]; s = buf; - if (i < 0) { + if (i < 0) + { i = -i; *p++ = '-'; } do *s++ = i % 10 + '0'; while (i /= 10); - while (s > buf) *p++ = *--s; + while (s > buf) + *p++ = *--s; *p = 0; - _Traps__Message(q, 0, (int) (p - q), 1); + _Traps__Message(q, 0, (int)(p - q), 1); } #if !defined(__em24) && !defined(__em44) && !defined(__em22) - if (trapno == M2_UNIXSIG) { + if (trapno == M2_UNIXSIG) + { extern int __signo; signal(__signo, SIG_DFL); _cleanup(); kill(getpid(), __signo); - _exit(trapno+1); + _exit(trapno + 1); } #endif - if (trapno != M2_FORCH) { + if (trapno != M2_FORCH) + { _cleanup(); - _exit(trapno+1); + _exit(trapno + 1); } SIG(catch); } diff --git a/lang/m2/libm2/confarray.c b/lang/m2/libm2/confarray.c index 624aacffc..91af2906c 100644 --- a/lang/m2/libm2/confarray.c +++ b/lang/m2/libm2/confarray.c @@ -8,6 +8,7 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ +#include "libm2.h" #include #ifndef EM_WSIZE @@ -15,58 +16,43 @@ #define EM_PSIZE _EM_PSIZE #endif -#if EM_WSIZE==EM_PSIZE -typedef unsigned pcnt; -#else -typedef unsigned long pcnt; -#endif +static struct stack_descr* descrs[10]; +static struct stack_descr** ppdescr = descrs; -struct descr { - char *addr; - int low; - unsigned int highminlow; - unsigned int size; -}; - -static struct descr *descrs[10]; -static struct descr **ppdescr = descrs; - -pcnt -new_stackptr(pdscr, a) - struct descr *pdscr; +size_t new_stackptr(struct stack_descr* pdescr, int a) { - register struct descr *pdescr = pdscr; - pcnt size = (((pdescr->highminlow + 1) * pdescr->size + - (EM_WSIZE - 1)) & ~(EM_WSIZE - 1)); + size_t size = (((pdescr->highminlow + 1) * pdescr->size + (EM_WSIZE - 1)) & ~(EM_WSIZE - 1)); - if (ppdescr >= &descrs[10]) { + if (ppdescr >= &descrs[10]) + { /* to many nested traps + handlers ! */ TRP(M2_TOOMANY); } *ppdescr++ = pdescr; - if ((char *) &a - (char *) &pdscr > 0) { + if ((char*)&a - (char*)&pdescr > 0) + { /* stack grows downwards */ - return - size; + return -size; } return size; } -copy_array(pp, a) - char *pp; +void copy_array(char* p, int a) { - register char *p = pp; - register char *q; - register pcnt sz; + char* q; + size_t sz; char dummy; ppdescr--; sz = ((*ppdescr)->highminlow + 1) * (*ppdescr)->size; - - if ((char *) &a - (char *) &pp > 0) { - (*ppdescr)->addr = q = (char *) &a; - } - else (*ppdescr)->addr = q = (char *) &a - - ((sz + (EM_WSIZE - 1)) & ~ (EM_WSIZE - 1)); - while (sz--) *q++ = *p++; + if ((char*)&a - (char*)&p > 0) + { + (*ppdescr)->addr = q = (char*)&a; + } + else + (*ppdescr)->addr = q = (char*)&a - ((sz + (EM_WSIZE - 1)) & ~(EM_WSIZE - 1)); + + while (sz--) + *q++ = *p++; } diff --git a/lang/m2/libm2/dvi.c b/lang/m2/libm2/dvi.c index 4f85cf64e..3c53b3156 100644 --- a/lang/m2/libm2/dvi.c +++ b/lang/m2/libm2/dvi.c @@ -8,45 +8,52 @@ Author: Ceriel J.H. Jacobs Version: $Id$ Reason: We cannot use DVI and RMI, because DVI rounds towards 0 - and Modula-2 requires truncation + and Modula-2 requires truncation */ +#include "libm2.h" #include -int -dvi(j,i) - int j,i; +int dvi(int j, int i) { - if (j == 0) TRP(EIDIVZ); - if ((i < 0) != (j < 0)) { - if (i < 0) i = -i; - else j = -j; - return -((i+j-1)/j); + if (j == 0) + TRP(EIDIVZ); + if ((i < 0) != (j < 0)) + { + if (i < 0) + i = -i; + else + j = -j; + return -((i + j - 1) / j); } - else return i/j; + else + return i / j; } -long -dvil(j,i) - long j,i; +long dvil(long j, long i) { - if (j == 0) TRP(EIDIVZ); - if ((i < 0) != (j < 0)) { - if (i < 0) i = -i; - else j = -j; - return -((i+j-1)/j); + if (j == 0) + TRP(EIDIVZ); + if ((i < 0) != (j < 0)) + { + if (i < 0) + i = -i; + else + j = -j; + return -((i + j - 1) / j); } - else return i/j; + else + return i / j; } -int -rmi(j,i) - int j,i; +int rmi(int j, int i) { int m; - if (j == 0) TRP(EIDIVZ); - if (i == 0) return 0; + if (j == 0) + TRP(EIDIVZ); + if (i == 0) + return 0; m = i % j; if (m != 0 && (i < 0) != (j < 0)) @@ -54,14 +61,14 @@ rmi(j,i) return m; } -long -rmil(j,i) - long j,i; +long rmil(long j, long i) { long m; - if (j == 0) TRP(EIDIVZ); - if (i == 0) return 0L; + if (j == 0) + TRP(EIDIVZ); + if (i == 0) + return 0L; m = i % j; if (m != 0 && (i < 0) != (j < 0)) diff --git a/lang/m2/libm2/halt.c b/lang/m2/libm2/halt.c index 2d798662f..82d911fc8 100644 --- a/lang/m2/libm2/halt.c +++ b/lang/m2/libm2/halt.c @@ -8,29 +8,32 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ + +#include +#include "libm2.h" #define MAXPROCS 32 static int callindex = 0; -static int (*proclist[MAXPROCS])(); +static void (*proclist[MAXPROCS])(void); -_cleanup() +void _cleanup(void) { while (--callindex >= 0) (*proclist[callindex])(); callindex = 0; } -CallAtEnd(p) - int (*p)(); +int CallAtEnd(void (*p)(void)) { - if (callindex >= MAXPROCS) { + if (callindex >= MAXPROCS) + { return 0; } proclist[callindex++] = p; return 1; } -halt() +void halt(void) { _cleanup(); _exit(0); diff --git a/lang/m2/libm2/init.c b/lang/m2/libm2/init.c index d3c60bcea..80ee9a617 100644 --- a/lang/m2/libm2/init.c +++ b/lang/m2/libm2/init.c @@ -12,6 +12,7 @@ #include #include #include +#include "libm2.h" static const char signals_list[] = { #ifdef SIGHUP @@ -57,7 +58,8 @@ static const char signals_list[] = { void init(void) { const char* p = signals_list; - do { + do + { int i = *p++; if (i == -1) break; @@ -70,29 +72,28 @@ void init(void) #endif } #if defined(__em22) || defined(__em24) || defined(__em44) -killbss() +void killbss(void) { } #else -static int blablabla; /* We cannot use end, because then also - bss allocated for the systemcall lib - would be overwritten. Lets hope that - this helps ... - */ +static int blablabla; /* We cannot use end, because then also + bss allocated for the systemcall lib + would be overwritten. Lets hope that + this helps ... + */ -killbss() +void killbss(void) { - extern char *bkillbss; - register char *p = (char *) &bkillbss; + extern char* bkillbss; + register char* p = (char*)&bkillbss; - while (p < (char *) &blablabla) *p++ = 0x66; + while (p < (char*)&blablabla) + *p++ = 0x66; } #endif -extern int catch(); - -int (*handler)() = catch; -char **argv = 0; +void (*handler)(int) = catch; +char** argv = 0; int argc = 0; -char *MainLB = 0; +char* MainLB = 0; diff --git a/lang/m2/libm2/load.c b/lang/m2/libm2/load.c index 0a7f95891..4739fd66f 100644 --- a/lang/m2/libm2/load.c +++ b/lang/m2/libm2/load.c @@ -9,6 +9,7 @@ Version: $Id$ */ +#include "libm2.h" #include #ifndef EM_WSIZE @@ -16,30 +17,26 @@ #define EM_PSIZE _EM_PSIZE #endif -#if EM_WSIZE==EM_PSIZE -typedef unsigned pcnt; -#else -typedef long pcnt; -#endif - -load(siz, addr, p) - register char *addr; - register pcnt siz; +void load(size_t siz, char* addr, int p) { /* Make sure, that a value with a size that could have been - handled by the LOI instruction ends up at the same place, - where it would, were the LOI instruction used. + handled by the LOI instruction ends up at the same place, + where it would, were the LOI instruction used. */ - register char *q = (char *) &p; + register char* q = (char*)&p; char t[4]; - if (siz < EM_WSIZE && EM_WSIZE % siz == 0) { + if (siz < EM_WSIZE && EM_WSIZE % siz == 0) + { /* as long as EM_WSIZE <= 4 ... */ - if (siz != 2) TRP(M2_INTERNAL); /* internal error */ + if (siz != 2) + TRP(M2_INTERNAL); /* internal error */ q = &t[0]; } - while (siz--) *q++ = *addr++; - if (q - t == 2) { - *((unsigned *)(&p)) = *((unsigned short *) (&t[0])); + while (siz--) + *q++ = *addr++; + if (q - t == 2) + { + *((unsigned*)(&p)) = *((unsigned short*)(&t[0])); } } diff --git a/lang/m2/libm2/rcka.c b/lang/m2/libm2/rcka.c index ecae31465..91a09194c 100644 --- a/lang/m2/libm2/rcka.c +++ b/lang/m2/libm2/rcka.c @@ -8,18 +8,11 @@ * Version: $Id$ */ +#include "libm2.h" #include -extern TRP(); - -struct array_descr { - int lbound; - int n_elts_min_one; - unsigned size; -}; - -rcka(descr, indx) - struct array_descr *descr; +void rcka(struct array_descr* descr, int indx) { - if (indx < 0 || indx > descr->n_elts_min_one) TRP(EARRAY); + if (indx < 0 || indx > descr->n_elts_min_one) + TRP(EARRAY); } diff --git a/lang/m2/libm2/rcki.c b/lang/m2/libm2/rcki.c index 7edd61049..9185b562f 100644 --- a/lang/m2/libm2/rcki.c +++ b/lang/m2/libm2/rcki.c @@ -8,16 +8,11 @@ * Version: $Id$ */ +#include "libm2.h" #include -extern TRP(); - -struct range_descr { - int low, high; -}; - -rcki(descr, val) - struct range_descr *descr; +void rcki(struct int_range_descr* descr, int val) { - if (val < descr->low || val > descr->high) TRP(ERANGE); + if (val < descr->low || val > descr->high) + TRP(ERANGE); } diff --git a/lang/m2/libm2/rckil.c b/lang/m2/libm2/rckil.c index 9550a34f9..e91f6b031 100644 --- a/lang/m2/libm2/rckil.c +++ b/lang/m2/libm2/rckil.c @@ -8,17 +8,11 @@ * Version: $Id$ */ +#include "libm2.h" #include -extern TRP(); - -struct range_descr { - long low, high; -}; - -rckil(descr, val) - struct range_descr *descr; - long val; +void rckil(struct long_range_descr* descr, long val) { - if (val < descr->low || val > descr->high) TRP(ERANGE); + if (val < descr->low || val > descr->high) + TRP(ERANGE); } diff --git a/lang/m2/libm2/rcku.c b/lang/m2/libm2/rcku.c index 75e2643d3..6bbe74f86 100644 --- a/lang/m2/libm2/rcku.c +++ b/lang/m2/libm2/rcku.c @@ -8,17 +8,11 @@ * Version: $Id$ */ +#include "libm2.h" #include -extern TRP(); - -struct range_descr { - unsigned low, high; -}; - -rcku(descr, val) - struct range_descr *descr; - unsigned val; +void rcku(struct uint_range_descr* descr, unsigned int val) { - if (val < descr->low || val > descr->high) TRP(ERANGE); + if (val < descr->low || val > descr->high) + TRP(ERANGE); } diff --git a/lang/m2/libm2/rckul.c b/lang/m2/libm2/rckul.c index 96c2c279b..62eff0bc6 100644 --- a/lang/m2/libm2/rckul.c +++ b/lang/m2/libm2/rckul.c @@ -8,17 +8,11 @@ * Version: $Id$ */ +#include "libm2.h" #include -extern TRP(); - -struct range_descr { - unsigned long low, high; -}; - -rckul(descr, val) - struct range_descr *descr; - unsigned long val; +void rckul(struct ulong_range_descr* descr, unsigned long val) { - if (val < descr->low || val > descr->high) TRP(ERANGE); + if (val < descr->low || val > descr->high) + TRP(ERANGE); } diff --git a/lang/m2/libm2/sigtrp.c b/lang/m2/libm2/sigtrp.c index d997e2b58..fed000ba8 100644 --- a/lang/m2/libm2/sigtrp.c +++ b/lang/m2/libm2/sigtrp.c @@ -5,53 +5,52 @@ /* Module: Mapping of Unix signals to EM traps - (only when not using the MON instruction) + (only when not using the MON instruction) Author: Ceriel J.H. Jacobs Version: $Id$ */ #if !defined(__em22) && !defined(__em24) && !defined(__em44) -#define EM_trap(n) TRP(n) /* define to whatever is needed to cause the trap */ +#define EM_trap(n) TRP(n) /* define to whatever is needed to cause the trap */ +#include "libm2.h" #include #include int __signo; static int __traps[] = { - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, }; -static void -__ctchsig(signo) +static void __ctchsig(int signo) { - signal(signo,__ctchsig); + signal(signo, __ctchsig); #ifdef __BSD4_2 - sigsetmask(sigblock(0) & ~(1<<(signo - 1))); + sigsetmask(sigblock(0) & ~(1 << (signo - 1))); #endif __signo = signo; EM_trap(__traps[signo]); } -int -sigtrp(trapno, signo) +int sigtrp(int trapno, int signo) { /* Let Unix signal signo cause EM trap trapno to occur. - If trapno = -2, restore default, - If trapno = -3, ignore. - Return old trapnumber. - Careful, this could be -2 or -3; But return value of -1 - indicates failure, with error number in errno. + If trapno = -2, restore default, + If trapno = -3, ignore. + Return old trapnumber. + Careful, this could be -2 or -3; But return value of -1 + indicates failure, with error number in errno. */ extern int errno; - void (*ctch)() = __ctchsig; - void (*oldctch)(); + void (*ctch)(int) = __ctchsig; + void (*oldctch)(int); int oldtrap; - if (signo <= 0 || signo >= sizeof(__traps)/sizeof(__traps[0])) { + if (signo <= 0 || signo >= sizeof(__traps) / sizeof(__traps[0])) + { errno = EINVAL; return -1; } @@ -62,20 +61,23 @@ sigtrp(trapno, signo) ctch = SIG_DFL; else if (trapno >= 0 && trapno <= 252) ; - else { + else + { errno = EINVAL; return -1; } oldtrap = __traps[signo]; - if ((oldctch = signal(signo, ctch)) == (void (*)())-1) /* errno set by signal */ + if ((oldctch = signal(signo, ctch)) == (void (*)()) - 1) /* errno set by signal */ return -1; - - else if (oldctch == SIG_IGN) { + + else if (oldctch == SIG_IGN) + { signal(signo, SIG_IGN); } - else __traps[signo] = trapno; + else + __traps[signo] = trapno; return oldtrap; } diff --git a/lang/m2/libm2/stackprio.c b/lang/m2/libm2/stackprio.c index 24363e829..567440163 100644 --- a/lang/m2/libm2/stackprio.c +++ b/lang/m2/libm2/stackprio.c @@ -8,20 +8,20 @@ Author: Ceriel J.H. Jacobs Version: $Id$ */ +#include "libm2.h" static unsigned prio = 0; -stackprio(n) - unsigned n; +int stackprio(unsigned int n) { unsigned old = prio; - if (n > prio) prio = n; + if (n > prio) + prio = n; return old; } -unstackprio(n) - unsigned n; +void unstackprio(unsigned int n) { prio = n; } diff --git a/lang/m2/libm2/store.c b/lang/m2/libm2/store.c index cf5f3de86..c2595743e 100644 --- a/lang/m2/libm2/store.c +++ b/lang/m2/libm2/store.c @@ -9,6 +9,7 @@ Version: $Id$ */ +#include "libm2.h" #include #ifndef EM_WSIZE @@ -16,28 +17,23 @@ #define EM_PSIZE _EM_PSIZE #endif -#if EM_WSIZE==EM_PSIZE -typedef unsigned pcnt; -#else -typedef long pcnt; -#endif - -store(siz, addr, p) - register char *addr; - register pcnt siz; +void store(size_t siz, char* addr, int p) { /* Make sure, that a value with a size that could have been - handled by the LOI instruction is handled as if it was - loaded with the LOI instruction. + handled by the LOI instruction is handled as if it was + loaded with the LOI instruction. */ - register char *q = (char *) &p; + register char* q = (char*)&p; char t[4]; - if (siz < EM_WSIZE && EM_WSIZE % siz == 0) { + if (siz < EM_WSIZE && EM_WSIZE % siz == 0) + { /* as long as EM_WSIZE <= 4 ... */ - if (siz != 2) TRP(M2_INTERNAL); /* internal error */ - *((unsigned short *) (&t[0])) = *((unsigned *) q); + if (siz != 2) + TRP(M2_INTERNAL); /* internal error */ + *((unsigned short*)(&t[0])) = *((unsigned*)q); q = &t[0]; } - while (siz--) *addr++ = *q++; + while (siz--) + *addr++ = *q++; } diff --git a/lang/m2/libm2/ucheck.c b/lang/m2/libm2/ucheck.c index 6d828580e..bee4c021c 100644 --- a/lang/m2/libm2/ucheck.c +++ b/lang/m2/libm2/ucheck.c @@ -15,51 +15,52 @@ #define EM_LSIZE _EM_LSIZE #endif +#include "libm2.h" #include -#define MAXCARD ((unsigned)-1) +#define MAXCARD ((unsigned)-1) #if EM_WSIZE < EM_LSIZE -#define MAXLONGCARD ((unsigned long) -1L) +#define MAXLONGCARD ((unsigned long)-1L) #endif -adduchk(a,b) - unsigned a,b; +void adduchk(unsigned int a, unsigned int b) { - if (MAXCARD - a < b) TRP(M2_UOVFL); + if (MAXCARD - a < b) + TRP(M2_UOVFL); } #if EM_WSIZE < EM_LSIZE -addulchk(a,b) - unsigned long a,b; +void addulchk(unsigned long a, unsigned long b) { - if (MAXLONGCARD - a < b) TRP(M2_UOVFL); + if (MAXLONGCARD - a < b) + TRP(M2_UOVFL); } #endif -muluchk(a,b) - unsigned a,b; +void muluchk(unsigned int a, unsigned int b) { - if (a != 0 && MAXCARD/a < b) TRP(M2_UOVFL); + if (a != 0 && MAXCARD / a < b) + TRP(M2_UOVFL); } #if EM_WSIZE < EM_LSIZE -mululchk(a,b) - unsigned long a,b; +void mululchk(unsigned long a, unsigned long b) { - if (a != 0 && MAXLONGCARD/a < b) TRP(M2_UOVFL); + if (a != 0 && MAXLONGCARD / a < b) + TRP(M2_UOVFL); } #endif -subuchk(a,b) - unsigned a,b; +void subuchk(unsigned int a, unsigned int b) { - if (b < a) TRP(M2_UUVFL); + if (b < a) + TRP(M2_UUVFL); } #if EM_WSIZE < EM_LSIZE -subulchk(a,b) - unsigned long a,b; +void subulchk(unsigned long a, unsigned long b) { - if (b < a) TRP(M2_UUVFL); + if (b < a) + TRP(M2_UUVFL); } #endif