blob: 48150089bdd425856c1d4ed17dc2723e5ca4eb03 [file] [log] [blame]
Jordan Crousef6145c32008-03-19 23:56:58 +00001/*
2 * This file is part of the libpayload project.
3 *
4 * Copyright (C) 2008 Advanced Micro Devices, Inc.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
Uwe Hermanndc69e052008-03-20 01:53:30 +000030#ifndef LIBPAYLOAD_H
31#define LIBPAYLOAD_H
Jordan Crousef6145c32008-03-19 23:56:58 +000032
33#include <autoconf.h>
34#include <stddef.h>
35#include <arch/types.h>
36#include <arch/io.h>
Uwe Hermanndc69e052008-03-20 01:53:30 +000037#include <sysinfo.h>
Jordan Crousef6145c32008-03-19 23:56:58 +000038#include <stdarg.h>
39
40#define MIN(a,b) ((a) < (b) ? (a) : (b))
41#define MAX(a,b) ((a) > (b) ? (a) : (b))
42#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
43
Uwe Hermanndc69e052008-03-20 01:53:30 +000044/* drivers/keyboard.c */
45int keyboard_havechar(void);
46unsigned char keyboard_get_scancode(void);
47int keyboard_getchar(void);
Jordan Crousef6145c32008-03-19 23:56:58 +000048
Uwe Hermanndc69e052008-03-20 01:53:30 +000049/* drivers/serial.c */
50void serial_init(void);
51void serial_putchar(unsigned char c);
52int serial_havechar(void);
53int serial_getchar(void);
54
55/* drivers/serial.c */
56void vga_cursor_enable(int state);
57void vga_clear_line(uint8_t row, uint8_t ch, uint8_t attr);
58void vga_fill(uint8_t ch, uint8_t attr);
59void vga_clear(void);
60void vga_putc(uint8_t row, uint8_t col, unsigned int c);
61void vga_putchar(unsigned int ch);
62int vga_move_cursor(int x, int y);
63void vga_init(void);
64
65/* libc/console.c */
66void console_init(void);
Jordan Crousef6145c32008-03-19 23:56:58 +000067int putchar(int c);
Uwe Hermanndc69e052008-03-20 01:53:30 +000068int puts(const char *s);
69int havekey(void);
70int getchar(void);
71
Jordan Crousef6145c32008-03-19 23:56:58 +000072extern int last_putchar;
73
74#define havechar havekey
75
Uwe Hermanndc69e052008-03-20 01:53:30 +000076/* libc/ctype.c */
Jordan Crousef6145c32008-03-19 23:56:58 +000077int isspace(int c);
78int isdigit(int c);
79int tolower(int c);
80
Uwe Hermanndc69e052008-03-20 01:53:30 +000081/* libc/ipchecksum.c */
82unsigned short ipchksum(const unsigned short *ptr, unsigned long nbytes);
83
84/* libc/malloc.c */
Jordan Crousef6145c32008-03-19 23:56:58 +000085void free(void *ptr);
Uwe Hermanndc69e052008-03-20 01:53:30 +000086void *malloc(size_t size);
Jordan Crousef6145c32008-03-19 23:56:58 +000087void *calloc(size_t nmemb, size_t size);
88void *realloc(void *ptr, size_t size);
89
Uwe Hermanndc69e052008-03-20 01:53:30 +000090/* libc/memory.c */
Jordan Crousef6145c32008-03-19 23:56:58 +000091void *memset(void *s, int c, size_t n);
Uwe Hermanndc69e052008-03-20 01:53:30 +000092void *memcpy(void *dst, const void *src, size_t n);
Jordan Crousef6145c32008-03-19 23:56:58 +000093void *memmove(void *dst, const void *src, size_t n);
Uwe Hermanndc69e052008-03-20 01:53:30 +000094int memcmp(const char *s1, const char *s2, size_t len);
Jordan Crousef6145c32008-03-19 23:56:58 +000095
Uwe Hermanndc69e052008-03-20 01:53:30 +000096/* libc/printf.c */
Jordan Crousef6145c32008-03-19 23:56:58 +000097int sprintf(char *str, const char *fmt, ...);
98int vsnprintf(char *str, size_t size, const char *fmt, va_list ap);
99int vsprintf(char *str, const char *fmt, va_list ap);
100int printf(const char *fmt, ...);
101int vprintf(const char *fmt, va_list ap);
102
Uwe Hermanndc69e052008-03-20 01:53:30 +0000103/* libc/string.c */
104size_t strnlen(const char *str, size_t maxlen);
105size_t strlen(const char *str);
Jordan Crousef6145c32008-03-19 23:56:58 +0000106int strcmp(const char *s1, const char *s2);
Uwe Hermanndc69e052008-03-20 01:53:30 +0000107int strncmp(const char *s1, const char *s2, int maxlen);
108char *strncpy(char *d, const char *s, int n);
109char *strcpy(char *d, const char *s);
110char *strncat(char *d, const char *s, int n);
Jordan Crousef6145c32008-03-19 23:56:58 +0000111char *strchr(const char *s, int c);
Uwe Hermanndc69e052008-03-20 01:53:30 +0000112char *strdup(const char *s);
113char *strstr(const char *h, const char *n);
Jordan Crousef6145c32008-03-19 23:56:58 +0000114
Uwe Hermanndc69e052008-03-20 01:53:30 +0000115/* i386/coreboot.c */
116int get_coreboot_info(struct sysinfo_t *info);
Jordan Crousef6145c32008-03-19 23:56:58 +0000117
Uwe Hermanndc69e052008-03-20 01:53:30 +0000118/* i386/sysinfo.c */
119void lib_get_sysinfo(void);
120
121/* i386/timer.c */
122/* Timer functions - defined by each arcitecture. */
123unsigned int get_cpu_speed(void);
124void ndelay(unsigned int n);
125void mdelay(unsigned int n);
126void delay(unsigned int n);
127
128/* i386/util.S */
Jordan Crousef6145c32008-03-19 23:56:58 +0000129#define abort() halt()
130void halt(void) __attribute__ ((noreturn));
131
Jordan Crousef6145c32008-03-19 23:56:58 +0000132#endif