X-Git-Url: https://deadsoftware.ru/gitweb?p=cpc.git;a=blobdiff_plain;f=src%2Fcpfront%2Fposix%2Fgeneric%2FSystem%2FMod%2FKernel.cp;h=87ea635fc7524de0eca557d825ed0fc6dfee3f8c;hp=7c2c0bf26f9052a1bf73235b000c60cb52b07596;hb=7f31515b8ffa0954d6b96af35a3925ab82800ae2;hpb=4257db65ead872485357beb6f30c0f0fa6e7009c diff --git a/src/cpfront/posix/generic/System/Mod/Kernel.cp b/src/cpfront/posix/generic/System/Mod/Kernel.cp index 7c2c0bf..87ea635 100644 --- a/src/cpfront/posix/generic/System/Mod/Kernel.cp +++ b/src/cpfront/posix/generic/System/Mod/Kernel.cp @@ -521,26 +521,11 @@ MODULE Kernel; FreeMem(modAdr, modSize) END InvalModMem; - PROCEDURE TryRead (from, to, c: INTEGER); - VAR i: INTEGER; x: BYTE; - BEGIN - IF from <= to THEN - FOR i := from TO to DO - S.GET(i, x) - END - ELSE - FOR i := to TO from BY -1 DO - S.GET(i, x) - END - END; - END TryRead; - - PROCEDURE^ Try* (h: TryHandler; a, b, c: INTEGER); - PROCEDURE IsReadable* (from, to: INTEGER): BOOLEAN; - VAR r: BOOLEAN; res: setjmp.int; i: INTEGER; x: BYTE; + VAR r: BOOLEAN; jmp: setjmp.sigjmp_buf; res: setjmp.int; i: INTEGER; x: BYTE; BEGIN r := checkReadable; + jmp := checkReadableEnv; checkReadable := TRUE; res := setjmp.sigsetjmp(checkReadableEnv, 1); IF res = 0 THEN @@ -554,6 +539,7 @@ MODULE Kernel; END END END; + checkReadableEnv := jmp; checkReadable := r; RETURN res = 0 END IsReadable; @@ -1807,7 +1793,6 @@ MODULE Kernel; err := 202; (* illigal instruction *) IF IsReadable(pc, pc + 4) THEN S.GET(pc, val) - (* !!! err := halt code *) END; ELSE (* unknown *) END;