|
|
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: }
48:
49:
50: /**
51: * @brief C-routine to delay for a number of milliseconds.
52: * @param delay interval in terms of ms
53: */
54: void delay_ms( unsigned int ms )
55: {
56: uint32_t ticks_per_ms;
57:
58: ticks_per_ms = tb_frequency() / 1000;
59:
60: while (0 < ms) {
61: set_dec(ticks_per_ms);
62: while( ((get_dec()) & 0x80000000) == 0 );
63: ms--;
64: }
65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.