Module Name: src
Committed By: ryo
Date: Fri Oct 14 19:41:18 UTC 2022
Modified Files:
src/share/examples/asm/hello: Makefile
Added Files:
src/share/examples/asm/hello: aarch64.s arm.s i386.s sh3.s x86_64.s
Log Message:
add more examples
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/share/examples/asm/hello/Makefile
cvs rdiff -u -r0 -r1.1 src/share/examples/asm/hello/aarch64.s \
src/share/examples/asm/hello/arm.s src/share/examples/asm/hello/i386.s \
src/share/examples/asm/hello/sh3.s src/share/examples/asm/hello/x86_64.s
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/examples/asm/hello/Makefile
diff -u src/share/examples/asm/hello/Makefile:1.1 src/share/examples/asm/hello/Makefile:1.2
--- src/share/examples/asm/hello/Makefile:1.1 Sat Nov 12 01:18:41 2011
+++ src/share/examples/asm/hello/Makefile Fri Oct 14 19:41:18 2022
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile,v 1.1 2011/11/12 01:18:41 jmmv Exp $
+# $NetBSD: Makefile,v 1.2 2022/10/14 19:41:18 ryo Exp $
.include <bsd.own.mk>
.if ${MKSHARE} != "no"
-FILES= Makefile.inst powerpc.s
+FILES= Makefile.inst aarch64.s arm.s i386.s powerpc.s sh3.s x86_64.s
FILESDIR= /usr/share/examples/asm/hello
FILESNAME_Makefile.inst= Makefile
.endif
Added files:
Index: src/share/examples/asm/hello/aarch64.s
diff -u /dev/null src/share/examples/asm/hello/aarch64.s:1.1
--- /dev/null Fri Oct 14 19:41:18 2022
+++ src/share/examples/asm/hello/aarch64.s Fri Oct 14 19:41:18 2022
@@ -0,0 +1,84 @@
+/* $NetBSD: aarch64.s,v 1.1 2022/10/14 19:41:18 ryo Exp $ */
+
+/*-
+ * Copyright (c) 2022 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * assemble & link:
+ * as -o aarch64.o aarch64.s
+ * ld -o hello -e _start aarch64.o
+ */
+
+ /* ------------------------------------------------------------------ */
+
+ /*
+ * This ELF section is used by the kernel to determine, among other
+ * things, the system call interface used by the binary.
+ *
+ * Normally, /usr/lib/crti.o is linked, but here it is written manually.
+ *
+ * SEE ALSO:
+ * - http://www.netbsd.org/docs/kernel/elf-notes.html
+ * - src/sys/sys/exec_elf.h
+ * - src/lib/csu/common/sysident.S
+ * - src/lib/csu/arch/aarch64/crti.S
+ */
+ .section ".note.netbsd.ident", "a"
+ .p2align 2
+ .long 7 /* ELF_NOTE_NETBSD_NAMESZ */
+ .long 4 /* ELF_NOTE_NETBSD_DESCSZ */
+ .long 1 /* ELF_NOTE_TYPE_NETBSD_TAG */
+ .ascii "NetBSD\0\0" /* ELF_NOTE_NETBSD_NAME */
+ .long 999010000 /* __NetBSD_Version__ (sys/sys/param.h) */
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".rodata"
+message:
+ .ascii "Hello, world!\n"
+ .set MESSAGE_SIZE, . - message
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".text"
+ .p2align 2
+
+ .global _start
+ .type _start, %function
+_start:
+ /* write(STDOUT_FILENO, message, MESSAGE_SIZE) */
+ mov x0, #1 /* x0: fd = STDOUT_FILENO */
+ adr x1, message /* x1: buf = message */
+ mov x2, #MESSAGE_SIZE /* x2: nbytes = MESSAGE_SIZE */
+ svc #4 /* SYS_write */
+
+ /* exit(0) */
+ mov x0, #0 /* x0: status = 0 */
+ svc #1 /* SYS_exit */
+
+ .size _start, . - _start
Index: src/share/examples/asm/hello/arm.s
diff -u /dev/null src/share/examples/asm/hello/arm.s:1.1
--- /dev/null Fri Oct 14 19:41:18 2022
+++ src/share/examples/asm/hello/arm.s Fri Oct 14 19:41:18 2022
@@ -0,0 +1,88 @@
+/* $NetBSD: arm.s,v 1.1 2022/10/14 19:41:18 ryo Exp $ */
+
+/*-
+ * Copyright (c) 2022 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * assemble & link:
+ * as -o arm.o arm.s
+ * ld -o hello -e _start arm.o
+ */
+
+ /* ------------------------------------------------------------------ */
+
+ /*
+ * This ELF section is used by the kernel to determine, among other
+ * things, the system call interface used by the binary.
+ *
+ * Normally, /usr/lib/crti.o is linked, but here it is written manually.
+ *
+ * SEE ALSO:
+ * - http://www.netbsd.org/docs/kernel/elf-notes.html
+ * - src/sys/sys/exec_elf.h
+ * - src/lib/csu/common/sysident.S
+ * - src/lib/csu/arch/arm/crti.S
+ */
+ .section ".note.netbsd.ident", "a"
+ .p2align 2
+ .long 7 /* ELF_NOTE_NETBSD_NAMESZ */
+ .long 4 /* ELF_NOTE_NETBSD_DESCSZ */
+ .long 1 /* ELF_NOTE_TYPE_NETBSD_TAG */
+ .ascii "NetBSD\0\0" /* ELF_NOTE_NETBSD_NAME */
+ .long 999010000 /* __NetBSD_Version__ (sys/sys/param.h) */
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".rodata"
+message:
+ .ascii "Hello, world!\n"
+ .set MESSAGE_SIZE, . - message
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".text"
+ .p2align 2
+
+ .global _start
+ .type _start, %function
+_start:
+ /* write(STDOUT_FILENO, message, MESSAGE_SIZE) */
+ mov r0, #1 /* r0: fd = STDOUT_FILENO */
+ ldr r1, .Lmessage /* r1: buf = message */
+ mov r2, #MESSAGE_SIZE /* r2: nbytes = MESSAGE_SIZE */
+ svc #(0xa00000 | 4) /* SYS_write */
+
+ /* exit(0) */
+ mov r0, #0 /* r0: status = 0 */
+ svc #(0xa00000 | 1) /* SYS_exit */
+
+ .p2align 2
+.Lmessage:
+ .word message
+
+ .size _start, . - _start
Index: src/share/examples/asm/hello/i386.s
diff -u /dev/null src/share/examples/asm/hello/i386.s:1.1
--- /dev/null Fri Oct 14 19:41:18 2022
+++ src/share/examples/asm/hello/i386.s Fri Oct 14 19:41:18 2022
@@ -0,0 +1,89 @@
+/* $NetBSD: i386.s,v 1.1 2022/10/14 19:41:18 ryo Exp $ */
+
+/*-
+ * Copyright (c) 2022 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * assemble & link:
+ * as -o i386.o i386.s
+ * ld -o hello -e _start i386.o
+ */
+
+ /* ------------------------------------------------------------------ */
+
+ /*
+ * This ELF section is used by the kernel to determine, among other
+ * things, the system call interface used by the binary.
+ *
+ * Normally, /usr/lib/crti.o is linked, but here it is written manually.
+ *
+ * SEE ALSO:
+ * - http://www.netbsd.org/docs/kernel/elf-notes.html
+ * - src/sys/sys/exec_elf.h
+ * - src/lib/csu/common/sysident.S
+ * - src/lib/csu/arch/i386/crti.S
+ */
+ .section ".note.netbsd.ident", "a"
+ .p2align 2
+ .long 7 /* ELF_NOTE_NETBSD_NAMESZ */
+ .long 4 /* ELF_NOTE_NETBSD_DESCSZ */
+ .long 1 /* ELF_NOTE_TYPE_NETBSD_TAG */
+ .ascii "NetBSD\0\0" /* ELF_NOTE_NETBSD_NAME */
+ .long 999010000 /* __NetBSD_Version__ (sys/sys/param.h) */
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".rodata"
+message:
+ .ascii "Hello, world!\n"
+ .set MESSAGE_SIZE, . - message
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".text"
+ .p2align 2
+
+ .global _start
+ .type _start, %function
+_start:
+ /* write(STDOUT_FILENO, message, MESSAGE_SIZE) */
+ pushl $MESSAGE_SIZE /* sp[12]: nbytes = MESSAGE_SIZE */
+ pushl $message /* sp[8]: buf = message */
+ pushl $1 /* sp[4]: fd = STDOUT_FILENO */
+ pushl $0 /* sp[0] is return address (dummy) */
+ mov $4, %eax /* SYS_write */
+ int $0x80
+ add $16, %esp
+
+ /* exit(0) */
+ pushl $0 /* sp[4]: status = 0 */
+ pushl $0 /* sp[0] is return address (dummy) */
+ mov $1, %eax /* SYS_exit */
+ int $0x80
+
+ .size _start, . - _start
Index: src/share/examples/asm/hello/sh3.s
diff -u /dev/null src/share/examples/asm/hello/sh3.s:1.1
--- /dev/null Fri Oct 14 19:41:18 2022
+++ src/share/examples/asm/hello/sh3.s Fri Oct 14 19:41:18 2022
@@ -0,0 +1,90 @@
+/* $NetBSD: sh3.s,v 1.1 2022/10/14 19:41:18 ryo Exp $ */
+
+/*-
+ * Copyright (c) 2022 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * assemble & link:
+ * as -o sh3.o sh3.s
+ * ld -o hello -e __start sh3.o
+ */
+
+ /* ------------------------------------------------------------------ */
+
+ /*
+ * This ELF section is used by the kernel to determine, among other
+ * things, the system call interface used by the binary.
+ *
+ * Normally, /usr/lib/crti.o is linked, but here it is written manually.
+ *
+ * SEE ALSO:
+ * - http://www.netbsd.org/docs/kernel/elf-notes.html
+ * - src/sys/sys/exec_elf.h
+ * - src/lib/csu/common/sysident.S
+ * - src/lib/csu/arch/sh3/crti.S
+ */
+ .section ".note.netbsd.ident", "a"
+ .p2align 2
+ .long 7 /* ELF_NOTE_NETBSD_NAMESZ */
+ .long 4 /* ELF_NOTE_NETBSD_DESCSZ */
+ .long 1 /* ELF_NOTE_TYPE_NETBSD_TAG */
+ .ascii "NetBSD\0\0" /* ELF_NOTE_NETBSD_NAME */
+ .long 999010000 /* __NetBSD_Version__ (sys/sys/param.h) */
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".rodata"
+message:
+ .ascii "Hello, world!\n"
+ .set MESSAGE_SIZE, . - message
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".text"
+ .p2align 2
+
+ .global __start
+ .type _start, %function
+__start:
+ /* write(STDOUT_FILENO, message, MESSAGE_SIZE) */
+ mov #1, r4 /* r4: fd = STDOUT_FILENO */
+ mov.l .Lmessage, r5 /* r5: buf = message */
+ mov #MESSAGE_SIZE, r6 /* r6: nbytes = MESSAGE_SIZE */
+ mov #4, r0 /* SYS_write */
+ trapa #0x80
+
+ /* exit(0) */
+ mov #0, r4 /* r4: status = 0 */
+ mov #1, r0 /* SYS_exit */
+ trapa #0x80
+
+ .p2align 2
+.Lmessage:
+ .long message
+
+ .size __start, . - __start
Index: src/share/examples/asm/hello/x86_64.s
diff -u /dev/null src/share/examples/asm/hello/x86_64.s:1.1
--- /dev/null Fri Oct 14 19:41:18 2022
+++ src/share/examples/asm/hello/x86_64.s Fri Oct 14 19:41:18 2022
@@ -0,0 +1,89 @@
+/* $NetBSD: x86_64.s,v 1.1 2022/10/14 19:41:18 ryo Exp $ */
+
+/*-
+ * Copyright (c) 2022 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * assemble & link:
+ * as -o x86_64.o x86_64.s
+ * ld -o hello -e _start x86_64.o
+ */
+
+ /* ------------------------------------------------------------------ */
+
+ /*
+ * This ELF section is used by the kernel to determine, among other
+ * things, the system call interface used by the binary.
+ *
+ * Normally, /usr/lib/crti.o is linked, but here it is written manually.
+ *
+ * SEE ALSO:
+ * - http://www.netbsd.org/docs/kernel/elf-notes.html
+ * - src/sys/sys/exec_elf.h
+ * - src/lib/csu/common/sysident.S
+ * - src/lib/csu/arch/x86_64/crti.S
+ */
+ .section ".note.netbsd.ident", "a"
+ .p2align 2
+ .long 7 /* ELF_NOTE_NETBSD_NAMESZ */
+ .long 4 /* ELF_NOTE_NETBSD_DESCSZ */
+ .long 1 /* ELF_NOTE_TYPE_NETBSD_TAG */
+ .ascii "NetBSD\0\0" /* ELF_NOTE_NETBSD_NAME */
+ .long 999010000 /* __NetBSD_Version__ (sys/sys/param.h) */
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".rodata"
+message:
+ .ascii "Hello, world!\n"
+ .set MESSAGE_SIZE, . - message
+
+
+ /* ------------------------------------------------------------------ */
+
+ .section ".text"
+ .p2align 2
+
+ .global _start
+ .type _start, %function
+_start:
+ /* write(STDOUT_FILENO, message, MESSAGE_SIZE) */
+ movl $1, %edi /* %edi: fd = STDOUT_FILENO */
+ leaq message(%rip), %rsi /* %rsi: buf = message */
+ movl $MESSAGE_SIZE, %edx /* %edx: nbytes = MESSAGE_SIZE */
+
+ movl $4, %eax /* SYS_write */
+ movq %rcx, %r10
+ syscall
+
+ /* exit(0) */
+ xorl %edi, %edi /* %rdi: status = 0 */
+ mov $1, %eax /* SYS_exit */
+ movq %rcx, %r10
+ syscall
+
+ .size _start, . - _start