aboutsummaryrefslogtreecommitdiff
path: root/llfw/clib
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-12-01 09:51:44 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-12-01 09:51:44 +1100
commitaaad509cdca2ed5f2c92a26f5279ec0e89c4fd5f (patch)
treedfffc0d8f3d21f6736b7f09219c95e2370052d8a /llfw/clib
downloadSLOF-aaad509cdca2ed5f2c92a26f5279ec0e89c4fd5f.zip
SLOF-aaad509cdca2ed5f2c92a26f5279ec0e89c4fd5f.tar.gz
SLOF-aaad509cdca2ed5f2c92a26f5279ec0e89c4fd5f.tar.bz2
Initial import of slof-JX-1.7.0-4
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'llfw/clib')
-rw-r--r--llfw/clib/Makefile.inc42
-rw-r--r--llfw/clib/iolib.c65
-rw-r--r--llfw/clib/iolib.h35
3 files changed, 142 insertions, 0 deletions
diff --git a/llfw/clib/Makefile.inc b/llfw/clib/Makefile.inc
new file mode 100644
index 0000000..7003798
--- /dev/null
+++ b/llfw/clib/Makefile.inc
@@ -0,0 +1,42 @@
+# *****************************************************************************
+# * Copyright (c) 2004, 2008 IBM Corporation
+# * All rights reserved.
+# * This program and the accompanying materials
+# * are made available under the terms of the BSD License
+# * which accompanies this distribution, and is available at
+# * http://www.opensource.org/licenses/bsd-license.php
+# *
+# * Contributors:
+# * IBM Corporation - initial implementation
+# ****************************************************************************/
+
+include ../../make.rules
+
+CFLAGS_COMLIB = -pedantic -std=gnu99 -O0
+ASFLAGS_COMLIB =
+
+
+COMLIBDIR = $(LLFWCMNDIR)/clib
+
+COMLIB_SRC_ASM =
+COMLIB_SRC_C = iolib.c
+
+COMLIB_SRCS = $(COMLIB_SRC_ASM:%=$(COMLIBDIR)/%) \
+ $(COMLIB_SRC_C:%=$(COMLIBDIR)/%)
+COMLIB_OBJ_ASM = $(COMLIB_SRC_ASM:%.S=%.o)
+COMLIB_OBJ_C = $(COMLIB_SRC_C:%.c=%.o)
+
+
+comlib.o: $(COMLIB_OBJ_C) $(COMLIB_OBJ_ASM)
+ $(LD) $(LDFLAGS) $^ -o $@ -r
+
+%.o: $(LLFWCMNDIR)/clib/%.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(CFLAGS_COMLIB) -c $< -o $@
+
+%.o: $(LLFWCMNDIR)/clib/%.S
+ $(CC) $(CPPFLAGS) $(ASFLAGS) $(ASFLAGS_COMLIB) -c $< -o $@
+
+LLFW_CLEAN_TARGETS += clean_clib
+.PHONY : clean_clib
+clean_clib:
+ rm -f $(COMLIB_OBJ_C) $(COMLIB_OBJ_ASM) comlib.o
diff --git a/llfw/clib/iolib.c b/llfw/clib/iolib.c
new file mode 100644
index 0000000..56b7caf
--- /dev/null
+++ b/llfw/clib/iolib.c
@@ -0,0 +1,65 @@
+/******************************************************************************
+ * Copyright (c) 2004, 2008 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials
+ * are made available under the terms of the BSD License
+ * which accompanies this distribution, and is available at
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * Contributors:
+ * IBM Corporation - initial implementation
+ *****************************************************************************/
+
+#include <stdint.h>
+#include <stddef.h>
+#include <unistd.h>
+#include "iolib.h"
+
+void uart_send_byte(unsigned char b)
+{
+ asm volatile ("":::"3","4","5","6","7");
+ io_putchar(b);
+}
+
+/**
+ * Standard write function for the libc.
+ *
+ * @param fd file descriptor (should always be 1 or 2)
+ * @param buf pointer to the array with the output characters
+ * @param count number of bytes to be written
+ * @return the number of bytes that have been written successfully
+ */
+ssize_t write(int fd, const void *buf, size_t count)
+{
+ size_t i;
+ char *ptr = (char *)buf;
+
+ if (fd != 1 && fd != 2)
+ return 0;
+
+ for (i = 0; i < count; i++) {
+ if (*ptr == '\n')
+ uart_send_byte('\r');
+ uart_send_byte(*ptr++);
+ }
+
+ return i;
+}
+
+
+/**
+ * @brief C-routine to delay for a number of milliseconds.
+ * @param delay interval in terms of ms
+ */
+void delay_ms( unsigned int ms )
+{
+ uint32_t ticks_per_ms;
+
+ ticks_per_ms = tb_frequency() / 1000;
+
+ while (0 < ms) {
+ set_dec(ticks_per_ms);
+ while( ((get_dec()) & 0x80000000) == 0 );
+ ms--;
+ }
+}
diff --git a/llfw/clib/iolib.h b/llfw/clib/iolib.h
new file mode 100644
index 0000000..30dfa37
--- /dev/null
+++ b/llfw/clib/iolib.h
@@ -0,0 +1,35 @@
+/******************************************************************************
+ * Copyright (c) 2004, 2008 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials
+ * are made available under the terms of the BSD License
+ * which accompanies this distribution, and is available at
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * Contributors:
+ * IBM Corporation - initial implementation
+ *****************************************************************************/
+
+#ifndef IOLIB_H
+#define IOLIB_H
+
+#include <stdint.h>
+
+#define addr_t volatile unsigned int
+#define addr8_t volatile unsigned char
+
+extern void halt_sys (unsigned int);
+
+extern uint32_t get_sb_version (void);
+
+extern void uart_send_byte(unsigned char b);
+extern void io_putchar(unsigned char);
+
+extern uint64_t tb_frequency(void);
+extern uint64_t be_frequency(void);
+
+extern uint32_t get_dec(void);
+extern void set_dec(uint32_t);
+extern void delay_ms( unsigned int ms );
+
+#endif