Improved Makefile
authorMichael Spang <mspang@csclub.uwaterloo.ca>
Wed, 10 Nov 2010 12:54:26 +0000 (07:54 -0500)
committerMichael Spang <mspang@csclub.uwaterloo.ca>
Mon, 14 Mar 2011 04:02:44 +0000 (00:02 -0400)
Makefile [new file with mode: 0644]
bwio.c [new file with mode: 0644]
iotest.c [new file with mode: 0644]
src/Makefile [deleted file]
src/bwio.c [deleted file]
test/Makefile [deleted file]
test/iotest.c [deleted file]
test/iotest.h [deleted file]
test/iotest.map [deleted file]
test/orex.ld [deleted file]
ts7800.ld [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..dadc38c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,65 @@
+CC = gcc -L/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2 -I/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/include
+
+# Standard options
+CFLAGS  += -Wall -Werror -Iinclude -std=gnu99
+
+# ARMv5TE instruction set, ARM926ej-s tuning
+CFLAGS  += -march=armv5te -mtune=arm926ej-s
+
+# Keep frame pointers
+CFLAGS  += -fno-omit-frame-pointer
+
+# Make assembly output more readable
+CFLAGS  += -fverbose-asm
+
+# No unqualified builtin functions
+CFLAGS  += -fno-builtin
+
+# Do not link in glibc
+LDFLAGS += -nostdlib
+
+# Dump link map for inspection
+LDFLAGS += -Wl,-Map=$@.map
+
+# Custom linker script
+LDFLAGS += -T ts7800.ld
+
+# Disable demand-pageable
+LDFLAGS += -n
+
+# Link libgcc for compiler-generated function calls
+LDLIBS  += -lgcc
+
+# Debugging disabled by default
+ifeq ($(DEBUG),1)
+  CFLAGS += -g -DDEBUG -Wno-unused-function
+endif
+
+all: bin/iotest
+
+bin/iotest: obj/bwio.o obj/iotest.o
+
+bin/% :
+       @mkdir -p $(shell dirname $@)
+       $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter %.o,$^) $(filter %.a,$^) $(LDLIBS)
+
+obj/%.s : %.c
+       @mkdir -p $(shell dirname $@)
+       $(CC) -S $(CFLAGS) -o $@ $^
+
+obj/%.o : obj/%.s
+       @mkdir -p $(shell dirname $@)
+       $(CC) -c $(CFLAGS) -o $@ $^
+
+obj/%.o : %.S
+       @mkdir -p $(shell dirname $@)
+       $(CC) -c $(CFLAGS) -o $@ $^
+
+obj/%.s : obj/%.c
+       @mkdir -p $(shell dirname $@)
+       $(CC) -c $(CFLAGS) -o $@ $^
+
+clean:
+       rm -rf obj lib bin/*
+
+.PRECIOUS: obj/%.s obj/%.c
diff --git a/bwio.c b/bwio.c
new file mode 100644 (file)
index 0000000..5e21a37
--- /dev/null
+++ b/bwio.c
@@ -0,0 +1,272 @@
+/*
+ * bwio.c - busy-wait I/O routines for diagnosis
+ *
+ * Specific to the TS-7200 ARM evaluation board
+ *
+ */
+
+#include <stdarg.h>
+#include <ts7200.h>
+#include <bwio.h>
+
+/*
+ * The UARTs are initialized by RedBoot to the following state
+ *     115,200 bps
+ *     8 bits
+ *     no parity
+ *     fifos enabled
+ */
+int bwsetfifo(int channel, int state) {
+    volatile int *line, buf;
+    switch (channel) {
+    case COM1:
+        line = (int *)(UART1_BASE + UART_LCRH_OFFSET);
+        break;
+    case COM2:
+        line = (int *)(UART2_BASE + UART_LCRH_OFFSET);
+        break;
+    default:
+        return -1;
+        break;
+    }
+    buf = *line;
+    buf = state ? buf | FEN_MASK : buf & ~FEN_MASK;
+    *line = buf;
+    return 0;
+}
+
+int bwsetspeed(int channel, int speed) {
+    volatile int *high, *low;
+    switch (channel) {
+    case COM1:
+        high = (int *)(UART1_BASE + UART_LCRM_OFFSET);
+        low = (int *)(UART1_BASE + UART_LCRL_OFFSET);
+        break;
+    case COM2:
+        high = (int *)(UART2_BASE + UART_LCRM_OFFSET);
+        low = (int *)(UART2_BASE + UART_LCRL_OFFSET);
+        break;
+    default:
+        return -1;
+        break;
+    }
+    switch (speed) {
+    case 115200:
+        *high = 0x0;
+        *low = 0x3;
+        return 0;
+    case 2400:
+        *high = 0x0;
+        *low = 0x90;
+        return 0;
+    default:
+        return -1;
+    }
+}
+
+int bwputc(int channel, char c) {
+    volatile int *flags, *data;
+    switch (channel) {
+    case COM1:
+        flags = (int *)(UART1_BASE + UART_FLAG_OFFSET);
+        data = (int *)(UART1_BASE + UART_DATA_OFFSET);
+        break;
+    case COM2:
+        flags = (int *)(UART2_BASE + UART_FLAG_OFFSET);
+        data = (int *)(UART2_BASE + UART_DATA_OFFSET);
+        break;
+    default:
+        return -1;
+        break;
+    }
+    while ((*flags & TXFF_MASK)) ;
+    *data = c;
+    return 0;
+}
+
+char c2x(char ch) {
+    if ((ch <= 9))
+        return '0' + ch;
+    return 'a' + ch - 10;
+}
+
+int bwputx(int channel, char c) {
+    char chh, chl;
+
+    chh = c2x(c / 16);
+    chl = c2x(c % 16);
+    bwputc(channel, chh);
+    return bwputc(channel, chl);
+}
+
+int bwputr(int channel, unsigned int reg) {
+    int byte;
+    char *ch = (char *)&reg;
+
+    for (byte = 3; byte >= 0; byte--)
+        bwputx(channel, ch[byte]);
+    return bwputc(channel, ' ');
+}
+
+int bwputstr(int channel, char *str) {
+    while (*str) {
+        if (bwputc(channel, *str) < 0)
+            return -1;
+        str++;
+    }
+    return 0;
+}
+
+void bwputw(int channel, int n, char fc, char *bf) {
+    char ch;
+    char *p = bf;
+
+    while (*p++ && n > 0)
+        n--;
+    while (n-- > 0)
+        bwputc(channel, fc);
+    while ((ch = *bf++))
+        bwputc(channel, ch);
+}
+
+int bwgetc(int channel) {
+    volatile int *flags, *data;
+    unsigned char c;
+
+    switch (channel) {
+    case COM1:
+        flags = (int *)(UART1_BASE + UART_FLAG_OFFSET);
+        data = (int *)(UART1_BASE + UART_DATA_OFFSET);
+        break;
+    case COM2:
+        flags = (int *)(UART2_BASE + UART_FLAG_OFFSET);
+        data = (int *)(UART2_BASE + UART_DATA_OFFSET);
+        break;
+    default:
+        return -1;
+        break;
+    }
+    while (!(*flags & RXFF_MASK)) ;
+    c = *data;
+    return c;
+}
+
+int bwa2d(char ch) {
+    if (ch >= '0' && ch <= '9')
+        return ch - '0';
+    if (ch >= 'a' && ch <= 'f')
+        return ch - 'a' + 10;
+    if (ch >= 'A' && ch <= 'F')
+        return ch - 'A' + 10;
+    return -1;
+}
+
+char bwa2i(char ch, char **src, int base, int *nump) {
+    int num, digit;
+    char *p;
+
+    p = *src;
+    num = 0;
+    while ((digit = bwa2d(ch)) >= 0) {
+        if (digit > base)
+            break;
+        num = num * base + digit;
+        ch = *p++;
+    }
+    *src = p;
+    *nump = num;
+    return ch;
+}
+
+void bwui2a(unsigned int num, unsigned int base, char *bf) {
+    int n = 0;
+    int dgt;
+    unsigned int d = 1;
+
+    while ((num / d) >= base)
+        d *= base;
+    while (d != 0) {
+        dgt = num / d;
+        num %= d;
+        d /= base;
+        if (n || dgt > 0 || d == 0) {
+            *bf++ = dgt + (dgt < 10 ? '0' : 'a' - 10);
+            ++n;
+        }
+    }
+    *bf = 0;
+}
+
+void bwi2a(int num, char *bf) {
+    if (num < 0) {
+        num = -num;
+        *bf++ = '-';
+    }
+    bwui2a(num, 10, bf);
+}
+
+void bwformat(int channel, char *fmt, va_list va) {
+    char bf[12];
+    char ch, lz;
+    int w;
+
+    while ((ch = *(fmt++))) {
+        if (ch != '%')
+            bwputc(channel, ch);
+        else {
+            lz = 0;
+            w = 0;
+            ch = *(fmt++);
+            switch (ch) {
+            case '0':
+                lz = 1;
+                ch = *(fmt++);
+                break;
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+                ch = bwa2i(ch, &fmt, 10, &w);
+                break;
+            }
+            switch (ch) {
+            case 0:
+                return;
+            case 'c':
+                bwputc(channel, va_arg(va, int));
+                break;
+            case 's':
+                bwputw(channel, w, 0, va_arg(va, char *));
+                break;
+            case 'u':
+                bwui2a(va_arg(va, unsigned int), 10, bf);
+                bwputw(channel, w, lz, bf);
+                break;
+            case 'd':
+                bwi2a(va_arg(va, int), bf);
+                bwputw(channel, w, lz, bf);
+                break;
+            case 'x':
+                bwui2a(va_arg(va, unsigned int), 16, bf);
+                bwputw(channel, w, lz, bf);
+                break;
+            case '%':
+                bwputc(channel, ch);
+                break;
+            }
+        }
+    }
+}
+
+void bwprintf(int channel, char *fmt, ...) {
+    va_list va;
+
+    va_start(va, fmt);
+    bwformat(channel, fmt, va);
+    va_end(va);
+}
diff --git a/iotest.c b/iotest.c
new file mode 100644 (file)
index 0000000..2109833
--- /dev/null
+++ b/iotest.c
@@ -0,0 +1,20 @@
+ /*
+  * iotest.c
+  */
+
+#include <bwio.h>
+#include <ts7200.h>
+
+int main(int argc, char *argv[]) {
+    char str[] = "Hello\n\r";
+    bwsetfifo(COM2, OFF);
+    bwputstr(COM2, str);
+    bwputw(COM2, 10, '*', str);
+    bwprintf(COM2, "Hello world.\n\r");
+    bwprintf(COM2, "%s world%u.\n\r", "Well, hello", 23);
+    bwprintf(COM2, "%d worlds for %u person.\n\r", -23, 1);
+    bwprintf(COM2, "%x worlds for %d people.\n\r", -23, 723);
+    str[0] = bwgetc(COM2);
+    bwprintf(COM2, "%s", str);
+    return 0;
+}
diff --git a/src/Makefile b/src/Makefile
deleted file mode 100644 (file)
index 2ba126a..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Makefile for busy-wait IO library
-#
-XCC     = gcc
-AS     = as
-AR     = ar
-CFLAGS  = -c -fPIC -Wall -I. -I../include -mcpu=arm920t -msoft-float
-# -g: include hooks for gdb
-# -c: only compile
-# -mcpu=arm920t: generate code for the 920t architecture
-# -fpic: emit position-independent code
-# -Wall: report all warnings
-# -msoft-float: use software for floating point
-
-ASFLAGS        = -mcpu=arm920t -mapcs-32
-# -mapcs-32: always create a complete stack frame
-
-ARFLAGS = rcs
-
-all:  bwio.a 
-
-bwio.s: bwio.c 
-       $(XCC) -S $(CFLAGS) bwio.c
-
-bwio.o: bwio.s
-       $(AS) $(ASFLAGS) -o bwio.o bwio.s
-
-bwio.a: bwio.o
-       $(AR) $(ARFLAGS) $@ bwio.o
-
-
-clean:
-       -rm -f *.s *.a *.o
diff --git a/src/bwio.c b/src/bwio.c
deleted file mode 100644 (file)
index 5e21a37..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * bwio.c - busy-wait I/O routines for diagnosis
- *
- * Specific to the TS-7200 ARM evaluation board
- *
- */
-
-#include <stdarg.h>
-#include <ts7200.h>
-#include <bwio.h>
-
-/*
- * The UARTs are initialized by RedBoot to the following state
- *     115,200 bps
- *     8 bits
- *     no parity
- *     fifos enabled
- */
-int bwsetfifo(int channel, int state) {
-    volatile int *line, buf;
-    switch (channel) {
-    case COM1:
-        line = (int *)(UART1_BASE + UART_LCRH_OFFSET);
-        break;
-    case COM2:
-        line = (int *)(UART2_BASE + UART_LCRH_OFFSET);
-        break;
-    default:
-        return -1;
-        break;
-    }
-    buf = *line;
-    buf = state ? buf | FEN_MASK : buf & ~FEN_MASK;
-    *line = buf;
-    return 0;
-}
-
-int bwsetspeed(int channel, int speed) {
-    volatile int *high, *low;
-    switch (channel) {
-    case COM1:
-        high = (int *)(UART1_BASE + UART_LCRM_OFFSET);
-        low = (int *)(UART1_BASE + UART_LCRL_OFFSET);
-        break;
-    case COM2:
-        high = (int *)(UART2_BASE + UART_LCRM_OFFSET);
-        low = (int *)(UART2_BASE + UART_LCRL_OFFSET);
-        break;
-    default:
-        return -1;
-        break;
-    }
-    switch (speed) {
-    case 115200:
-        *high = 0x0;
-        *low = 0x3;
-        return 0;
-    case 2400:
-        *high = 0x0;
-        *low = 0x90;
-        return 0;
-    default:
-        return -1;
-    }
-}
-
-int bwputc(int channel, char c) {
-    volatile int *flags, *data;
-    switch (channel) {
-    case COM1:
-        flags = (int *)(UART1_BASE + UART_FLAG_OFFSET);
-        data = (int *)(UART1_BASE + UART_DATA_OFFSET);
-        break;
-    case COM2:
-        flags = (int *)(UART2_BASE + UART_FLAG_OFFSET);
-        data = (int *)(UART2_BASE + UART_DATA_OFFSET);
-        break;
-    default:
-        return -1;
-        break;
-    }
-    while ((*flags & TXFF_MASK)) ;
-    *data = c;
-    return 0;
-}
-
-char c2x(char ch) {
-    if ((ch <= 9))
-        return '0' + ch;
-    return 'a' + ch - 10;
-}
-
-int bwputx(int channel, char c) {
-    char chh, chl;
-
-    chh = c2x(c / 16);
-    chl = c2x(c % 16);
-    bwputc(channel, chh);
-    return bwputc(channel, chl);
-}
-
-int bwputr(int channel, unsigned int reg) {
-    int byte;
-    char *ch = (char *)&reg;
-
-    for (byte = 3; byte >= 0; byte--)
-        bwputx(channel, ch[byte]);
-    return bwputc(channel, ' ');
-}
-
-int bwputstr(int channel, char *str) {
-    while (*str) {
-        if (bwputc(channel, *str) < 0)
-            return -1;
-        str++;
-    }
-    return 0;
-}
-
-void bwputw(int channel, int n, char fc, char *bf) {
-    char ch;
-    char *p = bf;
-
-    while (*p++ && n > 0)
-        n--;
-    while (n-- > 0)
-        bwputc(channel, fc);
-    while ((ch = *bf++))
-        bwputc(channel, ch);
-}
-
-int bwgetc(int channel) {
-    volatile int *flags, *data;
-    unsigned char c;
-
-    switch (channel) {
-    case COM1:
-        flags = (int *)(UART1_BASE + UART_FLAG_OFFSET);
-        data = (int *)(UART1_BASE + UART_DATA_OFFSET);
-        break;
-    case COM2:
-        flags = (int *)(UART2_BASE + UART_FLAG_OFFSET);
-        data = (int *)(UART2_BASE + UART_DATA_OFFSET);
-        break;
-    default:
-        return -1;
-        break;
-    }
-    while (!(*flags & RXFF_MASK)) ;
-    c = *data;
-    return c;
-}
-
-int bwa2d(char ch) {
-    if (ch >= '0' && ch <= '9')
-        return ch - '0';
-    if (ch >= 'a' && ch <= 'f')
-        return ch - 'a' + 10;
-    if (ch >= 'A' && ch <= 'F')
-        return ch - 'A' + 10;
-    return -1;
-}
-
-char bwa2i(char ch, char **src, int base, int *nump) {
-    int num, digit;
-    char *p;
-
-    p = *src;
-    num = 0;
-    while ((digit = bwa2d(ch)) >= 0) {
-        if (digit > base)
-            break;
-        num = num * base + digit;
-        ch = *p++;
-    }
-    *src = p;
-    *nump = num;
-    return ch;
-}
-
-void bwui2a(unsigned int num, unsigned int base, char *bf) {
-    int n = 0;
-    int dgt;
-    unsigned int d = 1;
-
-    while ((num / d) >= base)
-        d *= base;
-    while (d != 0) {
-        dgt = num / d;
-        num %= d;
-        d /= base;
-        if (n || dgt > 0 || d == 0) {
-            *bf++ = dgt + (dgt < 10 ? '0' : 'a' - 10);
-            ++n;
-        }
-    }
-    *bf = 0;
-}
-
-void bwi2a(int num, char *bf) {
-    if (num < 0) {
-        num = -num;
-        *bf++ = '-';
-    }
-    bwui2a(num, 10, bf);
-}
-
-void bwformat(int channel, char *fmt, va_list va) {
-    char bf[12];
-    char ch, lz;
-    int w;
-
-    while ((ch = *(fmt++))) {
-        if (ch != '%')
-            bwputc(channel, ch);
-        else {
-            lz = 0;
-            w = 0;
-            ch = *(fmt++);
-            switch (ch) {
-            case '0':
-                lz = 1;
-                ch = *(fmt++);
-                break;
-            case '1':
-            case '2':
-            case '3':
-            case '4':
-            case '5':
-            case '6':
-            case '7':
-            case '8':
-            case '9':
-                ch = bwa2i(ch, &fmt, 10, &w);
-                break;
-            }
-            switch (ch) {
-            case 0:
-                return;
-            case 'c':
-                bwputc(channel, va_arg(va, int));
-                break;
-            case 's':
-                bwputw(channel, w, 0, va_arg(va, char *));
-                break;
-            case 'u':
-                bwui2a(va_arg(va, unsigned int), 10, bf);
-                bwputw(channel, w, lz, bf);
-                break;
-            case 'd':
-                bwi2a(va_arg(va, int), bf);
-                bwputw(channel, w, lz, bf);
-                break;
-            case 'x':
-                bwui2a(va_arg(va, unsigned int), 16, bf);
-                bwputw(channel, w, lz, bf);
-                break;
-            case '%':
-                bwputc(channel, ch);
-                break;
-            }
-        }
-    }
-}
-
-void bwprintf(int channel, char *fmt, ...) {
-    va_list va;
-
-    va_start(va, fmt);
-    bwformat(channel, fmt, va);
-    va_end(va);
-}
diff --git a/test/Makefile b/test/Makefile
deleted file mode 100644 (file)
index b58aa81..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Makefile for busy-wait IO tests
-#
-XCC     = gcc
-AS     = as
-LD      = ld
-CFLAGS  = -c -fPIC -Wall -I. -I../include -mcpu=arm920t -msoft-float
-# -g: include hooks for gdb
-# -c: only compile
-# -mcpu=arm920t: generate code for the 920t architecture
-# -fpic: emit position-independent code
-# -Wall: report all warnings
-
-ASFLAGS        = -mcpu=arm920t -mapcs-32
-# -mapcs: always generate a complete stack frame
-
-LDFLAGS = -init main -Map iotest.map -N  -T orex.ld -L/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2 -L../lib
-
-all:  iotest.s iotest.elf
-
-iotest.s: iotest.c iotest.h
-       $(XCC) -S $(CFLAGS) iotest.c
-
-iotest.o: iotest.s
-       $(AS) $(ASFLAGS) -o iotest.o iotest.s
-
-iotest.elf: iotest.o
-       $(LD) $(LDFLAGS) -o $@ iotest.o -lbwio -lgcc
-
-clean:
-       -rm -f iotest.elf *.s *.o iotest.map
diff --git a/test/iotest.c b/test/iotest.c
deleted file mode 100644 (file)
index 2109833..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
- /*
-  * iotest.c
-  */
-
-#include <bwio.h>
-#include <ts7200.h>
-
-int main(int argc, char *argv[]) {
-    char str[] = "Hello\n\r";
-    bwsetfifo(COM2, OFF);
-    bwputstr(COM2, str);
-    bwputw(COM2, 10, '*', str);
-    bwprintf(COM2, "Hello world.\n\r");
-    bwprintf(COM2, "%s world%u.\n\r", "Well, hello", 23);
-    bwprintf(COM2, "%d worlds for %u person.\n\r", -23, 1);
-    bwprintf(COM2, "%x worlds for %d people.\n\r", -23, 723);
-    str[0] = bwgetc(COM2);
-    bwprintf(COM2, "%s", str);
-    return 0;
-}
diff --git a/test/iotest.h b/test/iotest.h
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/test/iotest.map b/test/iotest.map
deleted file mode 100644 (file)
index 96e3932..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-Archive member included because of file (symbol)
-
-../lib/libbwio.a(bwio.o)      iotest.o (bwsetfifo)
-/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o)
-                              ../lib/libbwio.a(bwio.o) (__udivsi3)
-/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o)
-                              ../lib/libbwio.a(bwio.o) (__umodsi3)
-/u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o)
-                              /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o) (__div0)
-
-Memory Configuration
-
-Name             Origin             Length             Attributes
-ram              0x0000000000000000 0x0000000002000000
-rom              0x0000000060000000 0x0000000000800000
-*default*        0x0000000000000000 0xffffffffffffffff
-
-Linker script and memory map
-
-
-data            0x0000000000000000        0x0
-                0x0000000000000000                _DataStart = .
- *(.data)
-                0x0000000000000000                _DataEnd = .
-
-bss             0x0000000000000000        0x0
-                0x0000000000000000                _BssStart = .
- *(.bss)
-                0x0000000000000000                _BssEnd = .
-
-text            0x0000000000000000      0xfe4
- *(.text)
- .text          0x0000000000000000      0x134 iotest.o
-                0x0000000000000000                main
- .text          0x0000000000000134      0xc54 ../lib/libbwio.a(bwio.o)
-                0x00000000000004ac                bwputr
-                0x0000000000000a18                bwi2a
-                0x0000000000000134                bwsetfifo
-                0x0000000000000308                bwputc
-                0x0000000000000768                bwa2d
-                0x00000000000001fc                bwsetspeed
-                0x00000000000003cc                c2x
-                0x0000000000000810                bwa2i
-                0x00000000000006b0                bwgetc
-                0x00000000000008d4                bwui2a
-                0x0000000000000a7c                bwformat
-                0x00000000000005a8                bwputw
-                0x0000000000000d50                bwprintf
-                0x000000000000042c                bwputx
-                0x000000000000052c                bwputstr
- .text          0x0000000000000d88      0x110 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o)
-                0x0000000000000d88                __udivsi3
-                0x0000000000000e80                __aeabi_uidivmod
- .text          0x0000000000000e98       0xcc /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o)
-                0x0000000000000e98                __umodsi3
- .text          0x0000000000000f64        0x4 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o)
-                0x0000000000000f64                __aeabi_ldiv0
-                0x0000000000000f64                __div0
-                0x0000000000000f64                __aeabi_idiv0
- *(.got)
- *(.got.plt)
- .got.plt       0x0000000000000f68        0xc iotest.o
-                0x0000000000000f68                _GLOBAL_OFFSET_TABLE_
- *(.rodata)
- .rodata        0x0000000000000f74       0x70 iotest.o
- *(.glue_7)
- *(.glue_7t)
-
-.rel.dyn
-LOAD iotest.o
-LOAD ../lib/libbwio.a
-LOAD /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a
-OUTPUT(iotest.elf elf32-littlearm)
-
-.comment        0x0000000000000000       0x24
- .comment       0x0000000000000000       0x12 iotest.o
- .comment       0x0000000000000012       0x12 ../lib/libbwio.a(bwio.o)
-
-.debug_line     0x0000000000000000      0x14f
- .debug_line    0x0000000000000000       0x86 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o)
- .debug_line    0x0000000000000086       0x6f /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o)
- .debug_line    0x00000000000000f5       0x5a /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o)
-
-.debug_info     0x0000000000000000      0x153
- .debug_info    0x0000000000000000       0x71 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o)
- .debug_info    0x0000000000000071       0x71 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o)
- .debug_info    0x00000000000000e2       0x71 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o)
-
-.debug_abbrev   0x0000000000000000       0x3c
- .debug_abbrev  0x0000000000000000       0x14 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o)
- .debug_abbrev  0x0000000000000014       0x14 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o)
- .debug_abbrev  0x0000000000000028       0x14 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o)
-
-.debug_aranges  0x0000000000000000       0x60
- .debug_aranges
-                0x0000000000000000       0x20 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_udivsi3.o)
- .debug_aranges
-                0x0000000000000020       0x20 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_umodsi3.o)
- .debug_aranges
-                0x0000000000000040       0x20 /u/wbcowan/gnuarm-4.0.2/lib/gcc/arm-elf/4.0.2/libgcc.a(_dvmd_tls.o)
diff --git a/test/orex.ld b/test/orex.ld
deleted file mode 100644 (file)
index 127dd3e..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-ENTRY (main)
-
-MEMORY
-{
-ram : ORIGIN = 0x00000000, LENGTH = 32M
-rom : ORIGIN = 0x60000000, LENGTH = 8M
-}
-
-SECTIONS
-{
-data : /* Initialized data. */
-{
-_DataStart = . ;
-*(.data)
-_DataEnd = . ;
-} >ram
-
-bss : /* Uninitialized data. */
-{
-_BssStart = . ;
-*(.bss)
-_BssEnd = . ;
-} >ram
-
-text : /* The actual instructions. */
-{
-*(.text)
-*(.got)
-*(.got.plt)
-*(.rodata)
-*(.glue_7)
-*(.glue_7t)
-} >ram
-}
diff --git a/ts7800.ld b/ts7800.ld
new file mode 100644 (file)
index 0000000..434e5b4
--- /dev/null
+++ b/ts7800.ld
@@ -0,0 +1,34 @@
+ENTRY(_start)
+
+SECTIONS
+{
+  . = 0x8000;
+
+  .text 0x8000 : /* The actual instructions. */
+  {
+    obj/ts7800.o(.text)
+    *(.text)
+    *(.got)
+    *(.got.plt)
+    *(.rodata)
+    *(.rodata.*)
+    *(.glue_7)
+    *(.glue_7t)
+    *(.note.gnu.build-id)
+  }
+
+  .data : /* Initialized data. */
+  {
+    __data_start__ = .;
+    *(.data)
+    __data_end__ = .;
+  }
+
+  .bss : /* Uninitialized data. */
+  {
+    __bss_start__ = .;
+    *(.bss)
+    *(COMMON)
+    __bss_end__ = .;
+  }
+}