diff --git a/rtl/bsd/ossysc.inc b/rtl/bsd/ossysc.inc
index be0e9d5bca..254b1daf23 100644
--- a/rtl/bsd/ossysc.inc
+++ b/rtl/bsd/ossysc.inc
@@ -223,9 +223,13 @@ with blockmode have this higher?}
 function readbuffer:longint;
 
 var retval :longint;
-
+    basep : clong;
 begin
+{$ifdef USE_GETDIRENTRIES_SYSCALL}
+ Retval:=do_syscall(syscall_nr_getdirentries,TSysParam(dirp^.dd_fd),TSysParam(@dirp^.dd_buf^),DIRBLKSIZ {sizeof(getdentsbuffer)},TSysParam(@basep));
+{$else not USE_GETDIRENTRIES_SYSCALL}
  Retval:=do_syscall(syscall_nr_getdents,TSysParam(dirp^.dd_fd),TSysParam(@dirp^.dd_buf^),DIRBLKSIZ {sizeof(getdentsbuffer)});
+{$endif not USE_GETDIRENTRIES_SYSCALL}
    dirp^.dd_rewind:=TSysParam(dirp^.dd_buf);
    if retval=0 then
     begin
diff --git a/rtl/openbsd/sysnr.inc b/rtl/openbsd/sysnr.inc
index fc8ff1dc7f..5b041b3e2b 100644
--- a/rtl/openbsd/sysnr.inc
+++ b/rtl/openbsd/sysnr.inc
@@ -251,5 +251,6 @@ Const
 
 { Aliases }
         syscall_nr_waitpid      = syscall_nr_wait4;  // 7, added: ease of notation purposes
-        syscall_nr_getdents = syscall_nr_getdirentries;
+{        syscall_nr_getdents = syscall_nr_getdirentries; }
+{$define USE_GETDIRENTRIES_SYSCALL}