|
|
1.1 root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.