diff --git a/sys/errno.pas b/sys/errno.pas
new file mode 100644
index 00000000..6ceda038
--- /dev/null
+++ b/sys/errno.pas
@@ -0,0 +1,55 @@
+unit errno;
+
+{$mode ObjFPC}{$H+}
+{$CALLING SysV_ABI_CDecl}
+
+interface
+
+{$I sce_errno.inc}
+{$I errno.inc}
+
+function px2sce(e:Integer):Integer;
+function sce2px(e:Integer):Integer;
+
+function _set_errno(r:Integer):Integer;
+function _set_sce_errno(r:Integer):Integer;
+
+implementation
+
+uses
+ thr_error;
+
+function px2sce(e:Integer):Integer;
+begin
+ if (e=0) then
+ Result:=0
+ else
+ Result:=e-$7ffe0000;
+end;
+
+function sce2px(e:Integer):Integer;
+begin
+ if (e=0) then
+ Result:=0
+ else
+ Result:=e+$7ffe0000;
+end;
+
+function _set_errno(r:Integer):Integer;
+begin
+ Result:=0;
+ __error^:=r;
+ if (r<>0) then
+ begin
+ Result:=-1;
+ end;
+end;
+
+function _set_sce_errno(r:Integer):Integer;
+begin
+ __error^:=sce2px(r);
+ Result:=r;
+end;
+
+end.
+
diff --git a/sys/test/project1.lpi b/sys/test/project1.lpi
index 18b60240..d6b0fb4a 100644
--- a/sys/test/project1.lpi
+++ b/sys/test/project1.lpi
@@ -33,10 +33,6 @@
-
-
-
-
@@ -141,10 +137,6 @@
-
-
-
-
@@ -153,6 +145,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sys/test/project1.lpr b/sys/test/project1.lpr
index b320d05c..e2ca2d42 100644
--- a/sys/test/project1.lpr
+++ b/sys/test/project1.lpr
@@ -6,7 +6,6 @@ uses
signal,
ucontext,
_umtx,
- kern_umtx,
sys_umtx,
time,
kern_time,
@@ -18,10 +17,12 @@ uses
trap,
sys_sig,
md_psl,
- pthread_md,
+ kern_umtx,
thr_init,
thr_error,
- sysutils;
+ pthread_md,
+ sysutils,
+ errno;
var
mtx:umutex;