diff --git a/test/common_amd64/functions/access.c b/test/common_amd64/functions/access.c new file mode 100644 index 0000000..fd4cd2a --- /dev/null +++ b/test/common_amd64/functions/access.c @@ -0,0 +1,26 @@ +/* Copyright (C) 2020 Jeremiah Orians + * This file is part of M2-Planet. + * + * M2-Planet is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * M2-Planet is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with M2-Planet. If not, see . + */ + +int access(char* pathname, int mode) +{ + asm("LOAD_EFFECTIVE_ADDRESS_rdi %16" + "LOAD_INTEGER_rdi" + "LOAD_EFFECTIVE_ADDRESS_rsi %8" + "LOAD_INTEGER_rsi" + "LOAD_IMMEDIATE_rax %21" + "SYSCALL"); +} diff --git a/test/common_amd64/functions/chdir.c b/test/common_amd64/functions/chdir.c new file mode 100644 index 0000000..39218ab --- /dev/null +++ b/test/common_amd64/functions/chdir.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2020 Jeremiah Orians + * This file is part of M2-Planet. + * + * M2-Planet is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * M2-Planet is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with M2-Planet. If not, see . + */ + +int chdir(char* path) +{ + asm("LOAD_EFFECTIVE_ADDRESS_rdi %8" + "LOAD_INTEGER_rdi" + "LOAD_IMMEDIATE_rax %80" + "SYSCALL"); +} + +int fchdir(int fd) +{ + asm("LOAD_EFFECTIVE_ADDRESS_rdi %8" + "LOAD_INTEGER_rdi" + "LOAD_IMMEDIATE_rax %81" + "SYSCALL"); +} diff --git a/test/common_armv7l/functions/access.c b/test/common_armv7l/functions/access.c new file mode 100644 index 0000000..0919d9e --- /dev/null +++ b/test/common_armv7l/functions/access.c @@ -0,0 +1,26 @@ +/* Copyright (C) 2020 Jeremiah Orians + * This file is part of M2-Planet. + * + * M2-Planet is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * M2-Planet is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with M2-Planet. If not, see . + */ + +int access(char* pathname, int mode) +{ + asm("!4 R0 SUB R12 ARITH_ALWAYS" + "!0 R0 LOAD32 R0 MEMORY" + "!8 R1 SUB R12 ARITH_ALWAYS" + "!0 R1 LOAD32 R1 MEMORY" + "!33 R7 LOADI8_ALWAYS" + "SYSCALL_ALWAYS"); +} diff --git a/test/common_armv7l/functions/chdir.c b/test/common_armv7l/functions/chdir.c new file mode 100644 index 0000000..11efd7a --- /dev/null +++ b/test/common_armv7l/functions/chdir.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2020 Jeremiah Orians + * This file is part of M2-Planet. + * + * M2-Planet is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * M2-Planet is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with M2-Planet. If not, see . + */ + +int chdir(char* path) +{ + asm("!4 R0 SUB R12 ARITH_ALWAYS" + "!0 R0 LOAD32 R0 MEMORY" + "!12 R7 LOADI8_ALWAYS" + "SYSCALL_ALWAYS"); +} + +int fchdir(int fd) +{ + asm("!4 R0 SUB R12 ARITH_ALWAYS" + "!0 R0 LOAD32 R0 MEMORY" + "!133 R7 LOADI8_ALWAYS" + "SYSCALL_ALWAYS"); +} diff --git a/test/common_x86/functions/access.c b/test/common_x86/functions/access.c new file mode 100644 index 0000000..0146f52 --- /dev/null +++ b/test/common_x86/functions/access.c @@ -0,0 +1,26 @@ +/* Copyright (C) 2020 Jeremiah Orians + * This file is part of M2-Planet. + * + * M2-Planet is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * M2-Planet is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with M2-Planet. If not, see . + */ + +int access(char* pathname, int mode) +{ + asm("LOAD_EFFECTIVE_ADDRESS_ebx %8" + "LOAD_INTEGER_ebx" + "LOAD_EFFECTIVE_ADDRESS_ecx %4" + "LOAD_INTEGER_ecx" + "LOAD_IMMEDIATE_eax %33" + "INT_80"); +} diff --git a/test/common_x86/functions/chdir.c b/test/common_x86/functions/chdir.c new file mode 100644 index 0000000..ca046a8 --- /dev/null +++ b/test/common_x86/functions/chdir.c @@ -0,0 +1,32 @@ +/* Copyright (C) 2020 Jeremiah Orians + * This file is part of M2-Planet. + * + * M2-Planet is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * M2-Planet is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with M2-Planet. If not, see . + */ + +int chdir(char* path) +{ + asm("LOAD_EFFECTIVE_ADDRESS_ebx %4" + "LOAD_INTEGER_ebx" + "LOAD_IMMEDIATE_eax %12" + "INT_80"); +} + +int fchdir(int fd) +{ + asm("LOAD_EFFECTIVE_ADDRESS_ebx %4" + "LOAD_INTEGER_ebx" + "LOAD_IMMEDIATE_eax %133" + "INT_80"); +}