Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / llfw / clib / iolib.c
1 /******************************************************************************
2  * Copyright (c) 2004, 2008 IBM Corporation
3  * All rights reserved.
4  * This program and the accompanying materials
5  * are made available under the terms of the BSD License
6  * which accompanies this distribution, and is available at
7  * http://www.opensource.org/licenses/bsd-license.php
8  *
9  * Contributors:
10  *     IBM Corporation - initial implementation
11  *****************************************************************************/
12
13 #include <stdint.h>
14 #include <stddef.h>
15 #include <unistd.h>
16 #include "iolib.h"
17
18 void uart_send_byte(unsigned char b)
19 {
20         asm volatile ("":::"3","4","5","6","7");
21         io_putchar(b);
22 }
23
24 /**
25  * Standard write function for the libc.
26  *
27  * @param fd    file descriptor (should always be 1 or 2)
28  * @param buf   pointer to the array with the output characters
29  * @param count number of bytes to be written
30  * @return      the number of bytes that have been written successfully
31  */
32 ssize_t write(int fd, const void *buf, size_t count)
33 {
34         size_t i;
35         char *ptr = (char *)buf;
36
37         if (fd != 1 && fd != 2)
38                 return 0;
39
40         for (i = 0; i < count; i++) {
41                 if (*ptr == '\n')
42                         uart_send_byte('\r');
43                 uart_send_byte(*ptr++);
44         }
45
46         return i;
47 }