|
|
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.