dboot_printf.c revision 0d928757379972073af9fb22bdc827b74e8ba6ac
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * CDDL HEADER START
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * The contents of this file are subject to the terms of the
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * Common Development and Distribution License (the "License").
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * You may not use this file except in compliance with the License.
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * See the License for the specific language governing permissions
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * and limitations under the License.
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * When distributing Covered Code, include this CDDL HEADER in each
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * If applicable, add the following below this CDDL HEADER, with the
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * fields enclosed by brackets "[]" replaced with your own identifying
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * information: Portions Copyright [yyyy] [name of copyright owner]
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * CDDL HEADER END
0d928757379972073af9fb22bdc827b74e8ba6acGary Mills * Copyright (c) 2012 Gary Mills
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * Use is subject to license terms.
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * This file provides simple output formatting via dboot_printf()
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * Primitive version of panic, prints a message then resets the system
0d928757379972073af9fb22bdc827b74e8ba6acGary Mills if (boot_console_type(NULL) == CONS_SCREEN_TEXT) {
ae115bc77f6fcde83175c75b4206dc2e50747966mrj outb(0x64, 0xfe); /* this resets the system, see pc_reset() */
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * printf for boot code
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * output a string
ae115bc77f6fcde83175c75b4206dc2e50747966mrjstatic void
ae115bc77f6fcde83175c75b4206dc2e50747966mrj while (*s != 0) {
ae115bc77f6fcde83175c75b4206dc2e50747966mrjstatic void
ae115bc77f6fcde83175c75b4206dc2e50747966mrj if (i < 0)
ae115bc77f6fcde83175c75b4206dc2e50747966mrj while (i >= 0)
ae115bc77f6fcde83175c75b4206dc2e50747966mrj * very primitive printf - only does %s, %d, %x, %lx, or %%
ae115bc77f6fcde83175c75b4206dc2e50747966mrjstatic void
ae115bc77f6fcde83175c75b4206dc2e50747966mrj switch (*fmt) {
ae115bc77f6fcde83175c75b4206dc2e50747966mrj size = sizeof (long);
ae115bc77f6fcde83175c75b4206dc2e50747966mrj else if (size == sizeof (long))
ae115bc77f6fcde83175c75b4206dc2e50747966mrj size = sizeof (long long);
ae115bc77f6fcde83175c75b4206dc2e50747966mrj else if (size == sizeof (long))
ae115bc77f6fcde83175c75b4206dc2e50747966mrj else if (size == sizeof (long))