"Julio Merino" <jmmv%netbsd.org@localhost> writes:
> Module Name: src
> Committed By: jmmv
> Date: Sat Nov 12 01:18:41 UTC 2011
>
> Modified Files:
> src/share/examples: Makefile
> Added Files:
> src/share/examples/asm: Makefile Makefile.inc.inst README
> src/share/examples/asm/hello: Makefile Makefile.inst powerpc.s
>
> Log Message:
> Add assembly language examples in a new 'asm' subdirectory.
>
> At the moment this only provides an example for a "Hello world" program
> for powerpc. (Bear with me: this is my very first assembly program in
> powerpc; if you find anything stupid in the code, please fix it!)
>
>
> To generate a diff of this commit:
> cvs rdiff -u -r1.19 -r1.20 src/share/examples/Makefile
> cvs rdiff -u -r0 -r1.1 src/share/examples/asm/Makefile \
> src/share/examples/asm/Makefile.inc.inst src/share/examples/asm/README
> cvs rdiff -u -r0 -r1.1 src/share/examples/asm/hello/Makefile \
> src/share/examples/asm/hello/Makefile.inst \
> src/share/examples/asm/hello/powerpc.s
...
> Index: src/share/examples/asm/hello/Makefile.inst
> diff -u /dev/null src/share/examples/asm/hello/Makefile.inst:1.1
> --- /dev/null Sat Nov 12 01:18:41 2011
> +++ src/share/examples/asm/hello/Makefile.inst Sat Nov 12 01:18:41 2011
> @@ -0,0 +1,12 @@
> +# $NetBSD: Makefile.inst,v 1.1 2011/11/12 01:18:41 jmmv Exp $
> +
> +.include <bsd.own.mk>
> +
> +.if exists(${MACHINE_ARCH}.s)
> +PROG= hello
> +MAN= # empty
> +LDFLAGS= -nostdlib
> +SRCS= ${MACHINE_ARCH}.s
> +.endif
> +
> +.include <bsd.prog.mk>
> Index: src/share/examples/asm/hello/powerpc.s
> diff -u /dev/null src/share/examples/asm/hello/powerpc.s:1.1
> --- /dev/null Sat Nov 12 01:18:41 2011
> +++ src/share/examples/asm/hello/powerpc.s Sat Nov 12 01:18:41 2011
> @@ -0,0 +1,74 @@
> +# $NetBSD: powerpc.s,v 1.1 2011/11/12 01:18:41 jmmv Exp $
> +#
> +# Copyright (c) 2011 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.
> +#
> +
> +# ------------------------------------------------------------------------
> +
> +.section ".note.netbsd.ident", "a"
> + # This ELF section is used by the kernel to determine, among other
> + # things, the system call interface used by the binary.
> + #
> + # See http://www.netbsd.org/docs/kernel/elf-notes.html for more
> + # details.
> +
> + .int 7 # Length of the OS name field below.
> + .int 4 # Length of the description field below.
> + .int 0x01 # The type of the note: NetBSD OS Version.
> + .ascii "NetBSD\0\0" # The OS name, padded to 8 bytes.
> + .int 0x23b419a0 # The description value; 5.99.56.
> +
> +# ------------------------------------------------------------------------
#include <sys/syscall.h>
#ifdef __NetBSD_Version__
.section ".note.netbsd.ident", "a"
.long 2f-1f
.long 4f-3f
.long 1
1: .asciz "NetBSD"
2: .p2align 2
3: .long __NetBSD_Version__
4: .p2align 2
#endif
"#ifdef" because it works (worked, at least) in FreeBSD as well.
But then it should be called "<something>.S".
Note capital "S", standard rule is to run that through CPP.
--
HE CE3OH...
Attachment:
pgp1lcUhQ07Jf.pgp
Description: PGP signature