A simple, tiny, statically linked 64-bit x86 'hello world' test. It uses
two system calls (write and exit) and provides a basic sanity check to
make sure that the arm bsd-user binary can interpret FreeBSD 64-bit
amd64 binaries. Please note: it's named amd64 because that's the target
name for FreeBSD's clang and it simplifies building a little.

Signed-off-by: Warner Losh <i...@bsdimp.com>
---
 tests/bsd-user-smoke/h.amd64.S | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 tests/bsd-user-smoke/h.amd64.S

diff --git a/tests/bsd-user-smoke/h.amd64.S b/tests/bsd-user-smoke/h.amd64.S
new file mode 100644
index 00000000000..a769e59beb8
--- /dev/null
+++ b/tests/bsd-user-smoke/h.amd64.S
@@ -0,0 +1,28 @@
+# Copyright (c) 2021 Warner Losh
+# SPDX-License-Identifier: BSD-2-Clause
+
+#include <sys/syscall.h>
+#define STDOUT_FILENO  1
+
+       .text
+       .globl  qemu_start
+       .p2align        4, 0x90
+qemu_start:
+
+       # write(1, .L.str, sizeof(.L.str) - 1)
+       movq    $.L.str, %rsi
+       movl    $STDOUT_FILENO, %edi
+       movl    $len, %edx
+       movl    $SYS_write, %eax
+       syscall
+
+       # _exit(0)
+       xorl    %edi, %edi
+       movl    $SYS_exit, %eax
+       syscall
+
+       .section        .rodata.str1.1,"aMS",@progbits,1
+.L.str:
+       .asciz  "Hello World\n"
+.L.strEnd:
+len=.L.strEnd - .L.str - 1
-- 
2.33.0


Reply via email to