From 53bfd680f2bc3f9c3369e3c30189f4dc4eae7401 Mon Sep 17 00:00:00 2001 From: dsl Date: Thu, 2 Jun 2011 18:53:00 +0000 Subject: [PATCH] Add C stubs to allow prints early in the boot code. --- sys/arch/i386/stand/lib/Makefile | 4 +- sys/arch/i386/stand/lib/putstr32.S | 69 ++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 sys/arch/i386/stand/lib/putstr32.S diff --git a/sys/arch/i386/stand/lib/Makefile b/sys/arch/i386/stand/lib/Makefile index bf9811da3630..0378921612b7 100644 --- a/sys/arch/i386/stand/lib/Makefile +++ b/sys/arch/i386/stand/lib/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.32 2011/05/20 22:29:56 joerg Exp $ +# $NetBSD: Makefile,v 1.33 2011/06/02 18:53:00 dsl Exp $ S?= ${.CURDIR}/../../../.. @@ -46,7 +46,7 @@ SRCS+= pread.c menuutils.c parseutils.c SRCS+= bootinfo.c bootinfo_biosgeom.c bootinfo_memmap.c SRCS+= startprog.S multiboot.S SRCS+= biosgetsystime.S cpufunc.S bootmenu.c -SRCS+= realprot.S message.S message32.S dump_eax.S pvcopy.S putstr.S +SRCS+= realprot.S message.S message32.S dump_eax.S pvcopy.S putstr.S putstr32.S SRCS+= rasops.c vbe.c biosvbe.S .if (${I386_INCLUDE_DISK} == "yes") SRCS+= biosdisk.c biosdisk_ll.c bios_disk.S diff --git a/sys/arch/i386/stand/lib/putstr32.S b/sys/arch/i386/stand/lib/putstr32.S new file mode 100644 index 000000000000..e700dd5d2aa2 --- /dev/null +++ b/sys/arch/i386/stand/lib/putstr32.S @@ -0,0 +1,69 @@ +/* $NetBSD: putstr32.S,v 1.1 2011/06/02 18:53:00 dsl Exp $ */ + +/*- + * Copyright (c) 20011 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by David Laight. + * + * 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. + */ + +#include + +/* + * Diagnostic print routines callable from 32bit C code during early + * parts of the boot process. + */ + +/* + * void putstr(const char *) + * + * display message on serial port + */ + + .globl _C_LABEL(putstr32) +_C_LABEL(putstr32): + .code32 + push %esi + movl 8(%esp), %esi + + call message32 + + pop %esi + ret + +/* + * void putint(int) + * + * display value on serial port as 8 hex digits followed by a space + */ + + .globl _C_LABEL(putint32) +_C_LABEL(putint32): + .code32 + movl 4(%esp), %eax + + call dump_eax32 + + ret