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