Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/share/examples/asm/hello add more examples
details: https://anonhg.NetBSD.org/src/rev/fe455f53a18e
branches: trunk
changeset: 371841:fe455f53a18e
user: ryo <ryo%NetBSD.org@localhost>
date: Fri Oct 14 19:41:18 2022 +0000
description:
add more examples
diffstat:
share/examples/asm/hello/Makefile | 4 +-
share/examples/asm/hello/aarch64.s | 84 +++++++++++++++++++++++++++++++++++
share/examples/asm/hello/arm.s | 88 +++++++++++++++++++++++++++++++++++++
share/examples/asm/hello/i386.s | 89 +++++++++++++++++++++++++++++++++++++
share/examples/asm/hello/sh3.s | 90 ++++++++++++++++++++++++++++++++++++++
share/examples/asm/hello/x86_64.s | 89 +++++++++++++++++++++++++++++++++++++
6 files changed, 442 insertions(+), 2 deletions(-)
diffs (truncated from 475 to 300 lines):
diff -r a79cc7c80ebd -r fe455f53a18e share/examples/asm/hello/Makefile
--- a/share/examples/asm/hello/Makefile Fri Oct 14 19:39:32 2022 +0000
+++ b/share/examples/asm/hello/Makefile Fri Oct 14 19:41:18 2022 +0000
@@ -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
diff -r a79cc7c80ebd -r fe455f53a18e share/examples/asm/hello/aarch64.s
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/examples/asm/hello/aarch64.s Fri Oct 14 19:41:18 2022 +0000
@@ -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
diff -r a79cc7c80ebd -r fe455f53a18e share/examples/asm/hello/arm.s
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/examples/asm/hello/arm.s Fri Oct 14 19:41:18 2022 +0000
@@ -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
diff -r a79cc7c80ebd -r fe455f53a18e share/examples/asm/hello/i386.s
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/examples/asm/hello/i386.s Fri Oct 14 19:41:18 2022 +0000
@@ -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
diff -r a79cc7c80ebd -r fe455f53a18e share/examples/asm/hello/sh3.s
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/examples/asm/hello/sh3.s Fri Oct 14 19:41:18 2022 +0000
@@ -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
Home |
Main Index |
Thread Index |
Old Index