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

Reply via email to