From: Alex Bennée Date: Thu, 5 Apr 2018 14:50:08 +0000 (+0100) Subject: tests/tcg: move MIPS specific tests into subdir X-Git-Url: https://repo.jachan.dev/qemu.git/commitdiff_plain/106ea2db123ff4ed57b38b4c0084b46833a3ae4c tests/tcg: move MIPS specific tests into subdir These only need to be built for MIPS guests. Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé --- diff --git a/tests/tcg/README b/tests/tcg/README index 625f2326e6..a5643d33e7 100644 --- a/tests/tcg/README +++ b/tests/tcg/README @@ -3,17 +3,6 @@ regression testing. Tests are either multi-arch, meaning they can be built for all guest architectures that support linux-user executable, or they are architecture specific. - - -MIPS -==== - -hello-mips ----------- - -hello-mipsel ------------- - CRIS ==== The testsuite for CRIS is in tests/tcg/cris. You can run it diff --git a/tests/tcg/hello-mips.c b/tests/tcg/hello-mips.c deleted file mode 100644 index f8256730dd..0000000000 --- a/tests/tcg/hello-mips.c +++ /dev/null @@ -1,64 +0,0 @@ -/* -* MIPS o32 Linux syscall example -* -* http://www.linux-mips.org/wiki/RISC/os -* http://www.linux-mips.org/wiki/MIPSABIHistory -* http://www.linux.com/howtos/Assembly-HOWTO/mips.shtml -* -* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -mabi=32 \ -* -O2 -static -o hello-mips hello-mips.c -* -*/ -#define __NR_SYSCALL_BASE 4000 -#define __NR_exit (__NR_SYSCALL_BASE+ 1) -#define __NR_write (__NR_SYSCALL_BASE+ 4) - -static inline void exit1(int status) -{ - register unsigned long __a0 asm("$4") = (unsigned long) status; - - __asm__ __volatile__ ( - " .set push \n" - " .set noreorder \n" - " li $2, %0 \n" - " syscall \n" - " .set pop " - : - : "i" (__NR_exit), "r" (__a0) - : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", - "memory"); -} - -static inline int write(int fd, const char *buf, int len) -{ - register unsigned long __a0 asm("$4") = (unsigned long) fd; - register unsigned long __a1 asm("$5") = (unsigned long) buf; - register unsigned long __a2 asm("$6") = (unsigned long) len; - register unsigned long __a3 asm("$7"); - unsigned long __v0; - - __asm__ __volatile__ ( - " .set push \n" - " .set noreorder \n" - " li $2, %2 \n" - " syscall \n" - " move %0, $2 \n" - " .set pop " - : "=r" (__v0), "=r" (__a3) - : "i" (__NR_write), "r" (__a0), "r" (__a1), "r" (__a2) - : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", - "memory"); - -/* if (__a3 == 0) */ - return (int) __v0; -/* - errno = __v0; - return -1; - */ -} - -void __start(void) -{ - write (1, "Hello, World!\n", 14); - exit1 (42); -} diff --git a/tests/tcg/mips/README b/tests/tcg/mips/README new file mode 100644 index 0000000000..e5bbc58ec5 --- /dev/null +++ b/tests/tcg/mips/README @@ -0,0 +1,7 @@ +MIPS +==== + +hello-mips +---------- + +A very simple inline assembly, write syscall based hello world diff --git a/tests/tcg/mips/hello-mips.c b/tests/tcg/mips/hello-mips.c new file mode 100644 index 0000000000..f8256730dd --- /dev/null +++ b/tests/tcg/mips/hello-mips.c @@ -0,0 +1,64 @@ +/* +* MIPS o32 Linux syscall example +* +* http://www.linux-mips.org/wiki/RISC/os +* http://www.linux-mips.org/wiki/MIPSABIHistory +* http://www.linux.com/howtos/Assembly-HOWTO/mips.shtml +* +* mipsel-linux-gcc -nostdlib -mno-abicalls -fno-PIC -mabi=32 \ +* -O2 -static -o hello-mips hello-mips.c +* +*/ +#define __NR_SYSCALL_BASE 4000 +#define __NR_exit (__NR_SYSCALL_BASE+ 1) +#define __NR_write (__NR_SYSCALL_BASE+ 4) + +static inline void exit1(int status) +{ + register unsigned long __a0 asm("$4") = (unsigned long) status; + + __asm__ __volatile__ ( + " .set push \n" + " .set noreorder \n" + " li $2, %0 \n" + " syscall \n" + " .set pop " + : + : "i" (__NR_exit), "r" (__a0) + : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", + "memory"); +} + +static inline int write(int fd, const char *buf, int len) +{ + register unsigned long __a0 asm("$4") = (unsigned long) fd; + register unsigned long __a1 asm("$5") = (unsigned long) buf; + register unsigned long __a2 asm("$6") = (unsigned long) len; + register unsigned long __a3 asm("$7"); + unsigned long __v0; + + __asm__ __volatile__ ( + " .set push \n" + " .set noreorder \n" + " li $2, %2 \n" + " syscall \n" + " move %0, $2 \n" + " .set pop " + : "=r" (__v0), "=r" (__a3) + : "i" (__NR_write), "r" (__a0), "r" (__a1), "r" (__a2) + : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", + "memory"); + +/* if (__a3 == 0) */ + return (int) __v0; +/* + errno = __v0; + return -1; + */ +} + +void __start(void) +{ + write (1, "Hello, World!\n", 14); + exit1 (42); +}