xref: /haiku/src/system/boot/platform/u-boot/debug.cpp (revision 5e78920c127914641b54a79ce41cb7120b6615fc)
1b6add3ffSAxel Dörfler /*
2b6add3ffSAxel Dörfler  * Copyright 2004-2010, Axel Dörfler, axeld@pinc-software.de.
3b6add3ffSAxel Dörfler  * Distributed under the terms of the MIT License.
4b6add3ffSAxel Dörfler  */
5b6add3ffSAxel Dörfler 
6b6add3ffSAxel Dörfler 
7b6add3ffSAxel Dörfler #include "serial.h"
8b6add3ffSAxel Dörfler #include "keyboard.h"
9b6add3ffSAxel Dörfler 
10b6add3ffSAxel Dörfler #include <boot/platform.h>
11b6add3ffSAxel Dörfler #include <boot/stdio.h>
12b6add3ffSAxel Dörfler #include <stdarg.h>
13b6add3ffSAxel Dörfler 
14b6add3ffSAxel Dörfler 
15b6add3ffSAxel Dörfler /*!	This works only after console_init() was called.
16b6add3ffSAxel Dörfler */
17b6add3ffSAxel Dörfler extern "C" void
18b6add3ffSAxel Dörfler panic(const char* format, ...)
19b6add3ffSAxel Dörfler {
20b6add3ffSAxel Dörfler 	va_list list;
21b6add3ffSAxel Dörfler 
22b6add3ffSAxel Dörfler 	platform_switch_to_text_mode();
23b6add3ffSAxel Dörfler 
24b6add3ffSAxel Dörfler 	puts("*** PANIC ***");
25b6add3ffSAxel Dörfler 
26b6add3ffSAxel Dörfler 	va_start(list, format);
27b6add3ffSAxel Dörfler 	vprintf(format, list);
28b6add3ffSAxel Dörfler 	va_end(list);
29b6add3ffSAxel Dörfler 
30b6add3ffSAxel Dörfler 	puts("\nPress key to reboot.");
31b6add3ffSAxel Dörfler 
32b6add3ffSAxel Dörfler 	clear_key_buffer();
33b6add3ffSAxel Dörfler 	wait_for_key();
34b6add3ffSAxel Dörfler 	platform_exit();
35b6add3ffSAxel Dörfler }
36b6add3ffSAxel Dörfler 
37b6add3ffSAxel Dörfler 
38b6add3ffSAxel Dörfler extern "C" void
39b6add3ffSAxel Dörfler dprintf(const char* format, ...)
40b6add3ffSAxel Dörfler {
41b6add3ffSAxel Dörfler 	char buffer[512];
42b6add3ffSAxel Dörfler 	va_list list;
43b6add3ffSAxel Dörfler 	int length;
44b6add3ffSAxel Dörfler 
45b6add3ffSAxel Dörfler 	va_start(list, format);
46b6add3ffSAxel Dörfler 	length = vsnprintf(buffer, sizeof(buffer), format, list);
47b6add3ffSAxel Dörfler 	va_end(list);
48b6add3ffSAxel Dörfler 
49b6add3ffSAxel Dörfler 	if (length >= (int)sizeof(buffer))
50b6add3ffSAxel Dörfler 		length = sizeof(buffer) - 1;
51b6add3ffSAxel Dörfler 
52b6add3ffSAxel Dörfler 	serial_puts(buffer, length);
53b6add3ffSAxel Dörfler 
54b6add3ffSAxel Dörfler 	if (platform_boot_options() & BOOT_OPTION_DEBUG_OUTPUT)
55b6add3ffSAxel Dörfler 		fprintf(stderr, "%s", buffer);
56b6add3ffSAxel Dörfler }
57*5e78920cSIngo Weinhold 
58*5e78920cSIngo Weinhold 
59*5e78920cSIngo Weinhold char*
60*5e78920cSIngo Weinhold platform_debug_get_log_buffer(size_t* _size)
61*5e78920cSIngo Weinhold {
62*5e78920cSIngo Weinhold 	return NULL;
63*5e78920cSIngo Weinhold }
64