mescc: Tinycc support: getcwd.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 24 Jul 2017 11:49:17 +0000 (13:49 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jul 2017 09:36:44 +0000 (11:36 +0200)
* mlibc/include/unistd.h (getcwd): Declare.
* stage0/x86.M1 (SYS_getcwd): New define.
* mlibc/libc-mes+tcc.c (getcwd): New function.

mlibc/include/unistd.h
mlibc/libc-mes+tcc.c
stage0/x86.M1

index 73e2aae55f0aef5129aebdd43edcc9d9e0c4dc31..37d21fc3dae5fd35c49d0ddca1871ebe298699f1 100644 (file)
@@ -41,6 +41,7 @@ typedef long ssize_t;
 
 int access (char const *s, int mode);
 int close (int fd);
+char *getcwd (char *buf, size_t size);
 int read (int fd, void* buf, size_t n);
 int write (int fd, char const* s, int n);
 #endif // ! (__GNUC__ && POSIX)
index 76f78f72dd25cbccef221af62fb952ca3ca72d1d..f7b928e1c7fe6555f1430cfd42ec35674bedaec9 100644 (file)
@@ -32,6 +32,16 @@ close ()
   asm ("int____$0x80");
 }
 
+char *
+getcwd (char *buf, size_t size)
+{
+  asm ("mov____0x8(%ebp),%ebx !8");
+  asm ("mov____0x8(%ebp),%ecx !12");
+
+  asm ("mov____$i32,%eax SYS_getcwd");
+  asm ("int____$0x80");
+}
+
 int
 fprintf (FILE *stream, char const *format, ...)
 {
index 3edf4ba162092e466e5e95b3a666617035bd50b4..6c12f8662ec0bf2e12bb50f003cd97a2c8d4c41b 100644 (file)
@@ -166,3 +166,4 @@ DEFINE SYS_close  06000000
 DEFINE SYS_access 21000000
 DEFINE SYS_brk    2d000000
 DEFINE SYS_fsync  76000000
+DEFINE SYS_getcwd b7000000