[PATCH] arm/gba: Remove

Aun-Ali Zaidi admin at kodeit.net
Fri Dec 11 23:21:26 UTC 2015


updates #2449.
---
 c/src/lib/libbsp/arm/acinclude.m4                 |   2 -
 c/src/lib/libbsp/arm/gba/Makefile.am              |  70 --
 c/src/lib/libbsp/arm/gba/README                   |   3 -
 c/src/lib/libbsp/arm/gba/bsp_specs                |  14 -
 c/src/lib/libbsp/arm/gba/clock/clockdrv.c         |  97 ---
 c/src/lib/libbsp/arm/gba/configure.ac             |  23 -
 c/src/lib/libbsp/arm/gba/console/conio.c          | 450 ----------
 c/src/lib/libbsp/arm/gba/console/console.c        | 257 ------
 c/src/lib/libbsp/arm/gba/console/defaultfont.h    | 602 --------------
 c/src/lib/libbsp/arm/gba/include/arm_mode_bits.h  |  46 --
 c/src/lib/libbsp/arm/gba/include/asm_macros.h     |  55 --
 c/src/lib/libbsp/arm/gba/include/bsp.h            |  61 --
 c/src/lib/libbsp/arm/gba/include/conio.h          | 101 ---
 c/src/lib/libbsp/arm/gba/include/gba.h            | 107 ---
 c/src/lib/libbsp/arm/gba/include/gba_registers.h  | 965 ----------------------
 c/src/lib/libbsp/arm/gba/irq/irq.c                |  71 --
 c/src/lib/libbsp/arm/gba/irq/irq.h                |  74 --
 c/src/lib/libbsp/arm/gba/make/custom/gba.cfg      |  24 -
 c/src/lib/libbsp/arm/gba/preinstall.am            |  99 ---
 c/src/lib/libbsp/arm/gba/start/logo.S             |  25 -
 c/src/lib/libbsp/arm/gba/start/start.S            | 396 ---------
 c/src/lib/libbsp/arm/gba/startup/bspgetworkarea.c |  21 -
 c/src/lib/libbsp/arm/gba/startup/bspreset.c       |  14 -
 c/src/lib/libbsp/arm/gba/startup/bspstart.c       |  58 --
 c/src/lib/libbsp/arm/gba/startup/linkcmds         | 386 ---------
 c/src/lib/libbsp/arm/gba/timer/timer.c            | 134 ---
 26 files changed, 4155 deletions(-)
 delete mode 100644 c/src/lib/libbsp/arm/gba/Makefile.am
 delete mode 100644 c/src/lib/libbsp/arm/gba/README
 delete mode 100644 c/src/lib/libbsp/arm/gba/bsp_specs
 delete mode 100644 c/src/lib/libbsp/arm/gba/clock/clockdrv.c
 delete mode 100644 c/src/lib/libbsp/arm/gba/configure.ac
 delete mode 100644 c/src/lib/libbsp/arm/gba/console/conio.c
 delete mode 100644 c/src/lib/libbsp/arm/gba/console/console.c
 delete mode 100644 c/src/lib/libbsp/arm/gba/console/defaultfont.h
 delete mode 100644 c/src/lib/libbsp/arm/gba/include/arm_mode_bits.h
 delete mode 100644 c/src/lib/libbsp/arm/gba/include/asm_macros.h
 delete mode 100644 c/src/lib/libbsp/arm/gba/include/bsp.h
 delete mode 100644 c/src/lib/libbsp/arm/gba/include/conio.h
 delete mode 100644 c/src/lib/libbsp/arm/gba/include/gba.h
 delete mode 100644 c/src/lib/libbsp/arm/gba/include/gba_registers.h
 delete mode 100644 c/src/lib/libbsp/arm/gba/irq/irq.c
 delete mode 100644 c/src/lib/libbsp/arm/gba/irq/irq.h
 delete mode 100644 c/src/lib/libbsp/arm/gba/make/custom/gba.cfg
 delete mode 100644 c/src/lib/libbsp/arm/gba/preinstall.am
 delete mode 100644 c/src/lib/libbsp/arm/gba/start/logo.S
 delete mode 100644 c/src/lib/libbsp/arm/gba/start/start.S
 delete mode 100644 c/src/lib/libbsp/arm/gba/startup/bspgetworkarea.c
 delete mode 100644 c/src/lib/libbsp/arm/gba/startup/bspreset.c
 delete mode 100644 c/src/lib/libbsp/arm/gba/startup/bspstart.c
 delete mode 100644 c/src/lib/libbsp/arm/gba/startup/linkcmds
 delete mode 100644 c/src/lib/libbsp/arm/gba/timer/timer.c

diff --git a/c/src/lib/libbsp/arm/acinclude.m4 b/c/src/lib/libbsp/arm/acinclude.m4
index 607a3b6..3a70e0a 100644
--- a/c/src/lib/libbsp/arm/acinclude.m4
+++ b/c/src/lib/libbsp/arm/acinclude.m4
@@ -12,8 +12,6 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR],
     AC_CONFIG_SUBDIRS([csb337]);;
   edb7312 )
     AC_CONFIG_SUBDIRS([edb7312]);;
-  gba )
-    AC_CONFIG_SUBDIRS([gba]);;
   gdbarmsim )
     AC_CONFIG_SUBDIRS([gdbarmsim]);;
   gp32 )
diff --git a/c/src/lib/libbsp/arm/gba/Makefile.am b/c/src/lib/libbsp/arm/gba/Makefile.am
deleted file mode 100644
index e2d69ce..0000000
--- a/c/src/lib/libbsp/arm/gba/Makefile.am
+++ /dev/null
@@ -1,70 +0,0 @@
-ACLOCAL_AMFLAGS = -I ../../../../aclocal
-
-include $(top_srcdir)/../../../../automake/compile.am
-
-include_bspdir = $(includedir)/bsp
-
-dist_project_lib_DATA = bsp_specs
-
-include_HEADERS = include/bsp.h
-include_HEADERS += include/arm_mode_bits.h
-include_HEADERS += include/asm_macros.h
-include_HEADERS += include/gba_registers.h
-include_HEADERS += include/conio.h
-include_HEADERS += ../../shared/include/tm27.h
-include_HEADERS += include/gba.h
-
-include_bsp_HEADERS =
-
-nodist_include_HEADERS = include/bspopts.h
-nodist_include_HEADERS += ../../shared/include/coverhd.h
-nodist_include_bsp_HEADERS = ../../shared/include/bootcard.h
-DISTCLEANFILES = include/bspopts.h
-noinst_PROGRAMS =
-
-noinst_LIBRARIES = libbspstart.a
-libbspstart_a_SOURCES = start/start.S
-project_lib_DATA = start.$(OBJEXT)
-
-dist_project_lib_DATA += startup/linkcmds
-
-noinst_LIBRARIES += libbsp.a
-libbsp_a_SOURCES =
-
-# startup
-libbsp_a_SOURCES += ../../shared/bsplibc.c ../../shared/bsppost.c \
-    startup/bspgetworkarea.c \
-    ../../shared/bsppredriverhook.c ../../shared/bspclean.c \
-    startup/bspreset.c ../../shared/bootcard.c ../../shared/sbrk.c \
-    ../../shared/gnatinstallhandler.c \
-    startup/bspstart.c
-libbsp_a_SOURCES += ../../shared/cpucounterread.c
-libbsp_a_SOURCES += ../../shared/cpucounterdiff.c
-# clock
-libbsp_a_SOURCES += clock/clockdrv.c
-libbsp_a_SOURCES += ../../shared/clockdrv_shell.h
-# console
-libbsp_a_SOURCES += console/conio.c console/console.c \
-    console/defaultfont.h
-# timer
-libbsp_a_SOURCES += timer/timer.c
-
-# irq
-include_bsp_HEADERS += ../../shared/include/irq-generic.h \
-	../../shared/include/irq-info.h \
-	irq/irq.h
-libbsp_a_SOURCES += ../../shared/src/irq-default-handler.c
-libbsp_a_SOURCES += ../../shared/src/irq-generic.c
-libbsp_a_SOURCES += ../../shared/src/irq-info.c
-libbsp_a_SOURCES += ../../shared/src/irq-legacy.c
-libbsp_a_SOURCES += ../../shared/src/irq-server.c
-libbsp_a_SOURCES += ../../shared/src/irq-shell.c
-libbsp_a_SOURCES += irq/irq.c
-
-# Cache
-libbsp_a_SOURCES += ../../../libcpu/shared/src/cache_manager.c
-libbsp_a_SOURCES += ../../shared/include/cache_.h
-libbsp_a_CPPFLAGS = -I$(srcdir)/../../shared/include
-
-include $(srcdir)/preinstall.am
-include $(top_srcdir)/../../../../automake/local.am
diff --git a/c/src/lib/libbsp/arm/gba/README b/c/src/lib/libbsp/arm/gba/README
deleted file mode 100644
index 445f73e..0000000
--- a/c/src/lib/libbsp/arm/gba/README
+++ /dev/null
@@ -1,3 +0,0 @@
-This is the BSP for Nintendo's GBA and GBA SP.  The RTEMS Wiki
-has more detailed information on this BSP.
-
diff --git a/c/src/lib/libbsp/arm/gba/bsp_specs b/c/src/lib/libbsp/arm/gba/bsp_specs
deleted file mode 100644
index 554ded6..0000000
--- a/c/src/lib/libbsp/arm/gba/bsp_specs
+++ /dev/null
@@ -1,14 +0,0 @@
-%rename endfile old_endfile
-%rename startfile old_startfile
-%rename link old_link
-
-*startfile:
-%{!qrtems: %(old_startfile)} \
-%{!nostdlib: %{qrtems: start.o%s crti.o%s crtbegin.o%s -e _start}}
-
-*link:
-%{!qrtems: %(old_link)} %{qrtems: -dc -dp -Bstatic -N}
-
-*endfile:
-%{!qrtems: %(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
-
diff --git a/c/src/lib/libbsp/arm/gba/clock/clockdrv.c b/c/src/lib/libbsp/arm/gba/clock/clockdrv.c
deleted file mode 100644
index ff17111..0000000
--- a/c/src/lib/libbsp/arm/gba/clock/clockdrv.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- *  @file clockdrv.c
- *
- *  Game Boy Advance Clock driver.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#include <rtems.h>
-#include <bsp.h>
-#include <bsp/irq.h>
-#include <gba.h>
-#include <assert.h>
-
-void Clock_isr(void * arg);
-void Clock_driver_support_initialize_hardware(void);
-
-#define Clock_driver_support_at_tick()
-
-#define Clock_driver_support_install_isr( _new, _old )  \
-  do {                                                  \
-    rtems_status_code status = RTEMS_SUCCESSFUL;        \
-    status = rtems_interrupt_handler_install(           \
-        BSP_IRQ_TIMER3,                                 \
-        "Clock",                                        \
-        RTEMS_INTERRUPT_UNIQUE,                         \
-        Clock_isr,                                      \
-        NULL                                            \
-    );                                                  \
-    assert(status == RTEMS_SUCCESSFUL);                 \
-    _old = NULL;                                        \
-  } while(0)
-
-#define Clock_driver_support_shutdown_hardware()        \
-  do {                                                  \
-    rtems_status_code status = RTEMS_SUCCESSFUL;        \
-    status = rtems_interrupt_handler_remove(            \
-        BSP_IRQ_TIMER3,                                 \
-        Clock_isr,                                      \
-        NULL                                            \
-    );                                                  \
-    assert(status == RTEMS_SUCCESSFUL);                 \
-  } while (0)
-
-
-/*
- * Calculate Tick Times
- *    1 / 16.78Mhz  => 59.595 ns
- *   64 / 16.78Mhz  =>  3.814 us
- *  256 / 16.78Mhz  => 15.256 us
- * 1024 / 16.78Mhz  => 61.025 us
- */
-#define  __TimTickTime_us   ((1000000L/__ClockFrequency)*__TimPreScaler)
-#define  __TimTickTime_ns   ((1000000000L/__ClockFrequency)*__TimPreScaler)
-
-#if (__TimPreScaler==1)
- #define GBA_TMCNT_PS    0x0000
-#elif (__TimPreScaler==64)
- #define GBA_TMCNT_PS    0x0001
-#elif (__TimPreScaler==256)
- #define GBA_TMCNT_PS    0x0002
-#elif (__TimPreScaler==1024)
- #define GBA_TMCNT_PS    0x0003
-#else
- #define GBA_TMCNT_PS    0x0003
-#endif
-
-/**
- *  @brief This function set up the clock hardware
- *
- *  @param  None
- *  @return None
- */
-void Clock_driver_support_initialize_hardware(void)
-{
-  int tmreload;
-
-  tmreload = rtems_configuration_get_nanoseconds_per_tick() / __TimTickTime_ns;
-
-  if (tmreload>0xFFFF)
-    tmreload = 0xFFFF;
-  GBA_REG_TM3CNT = (GBA_TMCNT_PS);
-  GBA_REG_TM3D   = (0x0000-tmreload);
-  GBA_REG_TM3CNT = (0x00c0|GBA_TMCNT_PS);
-}
-
-#define CLOCK_DRIVER_USE_DUMMY_TIMECOUNTER
-
-#include "../../../shared/clockdrv_shell.h"
diff --git a/c/src/lib/libbsp/arm/gba/configure.ac b/c/src/lib/libbsp/arm/gba/configure.ac
deleted file mode 100644
index 94c79cd..0000000
--- a/c/src/lib/libbsp/arm/gba/configure.ac
+++ /dev/null
@@ -1,23 +0,0 @@
-## Process this file with autoconf to produce a configure script.
-
-AC_PREREQ([2.69])
-AC_INIT([rtems-c-src-lib-libbsp-arm-gba],[_RTEMS_VERSION],[https://devel.rtems.org/newticket])
-AC_CONFIG_SRCDIR([bsp_specs])
-RTEMS_TOP(../../../../../..)
-
-RTEMS_CANONICAL_TARGET_CPU
-AM_INIT_AUTOMAKE([no-define nostdinc foreign 1.12.2])
-RTEMS_BSP_CONFIGURE
-
-RTEMS_PROG_CC_FOR_TARGET
-RTEMS_CANONICALIZE_TOOLS
-RTEMS_PROG_CCAS
-
-RTEMS_CHECK_NETWORKING
-AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
-
-RTEMS_BSP_CLEANUP_OPTIONS(1, 1)
-
-# Explicitly list all Makefiles here
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
diff --git a/c/src/lib/libbsp/arm/gba/console/conio.c b/c/src/lib/libbsp/arm/gba/console/conio.c
deleted file mode 100644
index c53793a..0000000
--- a/c/src/lib/libbsp/arm/gba/console/conio.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/**
- *  @file conio.c
- *
- *  This file contains the GBA conio I/O package.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *  based on MyLib by Rafael Vuijk (aka Dark Fader)
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-/*****************************************************************************
- * This source file is based on work by Rafael Vuijk (aka Dark Fader)
- *****************************************************************************
- *****************************************************************************
- * MyLib by Rafael Vuijk (aka Dark Fader)
- * :
- * This file is released into the public domain for commercial
- * or non-commercial usage with no restrictions placed upon it.
- *****************************************************************************/
-
-/*---------------------------------------------------------------------------*
- *   Includes                                                                *
- *---------------------------------------------------------------------------*/
-#include <stdint.h>
-#include <rtems/score/types.h>
-#include <gba.h>
-#include <conio.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-/*---------------------------------------------------------------------------*
- * Defines                                                                   *
- *---------------------------------------------------------------------------*/
-#define W                   60                        /**< Screen width      */
-#define H                   26                        /**< Screen height     */
-#define CLRSCR_SIZE         (W*4 * H*6)               /**< Screen size       */
-#define DEFAULT_FONT_WIDTH  4                         /**< Font width        */
-#define DEFAULT_FONT_HEIGHT 6                         /**< Font height       */
-
-typedef unsigned short      Palette[256];                              /**< 256 colors */
-typedef unsigned short      Palettes[16][16];                          /**< 16 palettes with each 16 colors */
-typedef unsigned short      Bitmap3[GBA_LCD_HEIGHT][GBA_LCD_WIDTH];    /**< 16 bits, single buffered */
-typedef unsigned char       Bitmap4[GBA_LCD_HEIGHT][GBA_LCD_WIDTH];    /**< 8 bits, double buffered  */
-typedef unsigned short      Bitmap5[GBA_MODE5_HEIGHT][GBA_MODE5_WIDTH];/**< double buffered          */
-
-#define VRAM                GBA_VRAM_ADDR             /**< VRAM address      */
-#define VRAM_END            (VRAM +    0x18000)       /**< VRAM end          */
-#define BG_BITMAP0_VRAM     (VRAM +        0x0)       /**< BG Bitmap 0 RAM   */
-#define BG_BITMAP1_VRAM     (VRAM +     0xa000)       /**< BG Bitmap 1 RAM   */
-
-#define bg_bitmap0          (*(Bitmap4 *)BG_BITMAP0_VRAM)
-#define bg_bitmap1          (*(Bitmap4 *)BG_BITMAP1_VRAM)
-#define bg_bitmap3          (*(Bitmap3 *)BG_BITMAP0_VRAM)
-#define bg_bitmap4a         (*(Bitmap4 *)BG_BITMAP0_VRAM)
-#define bg_bitmap4b         (*(Bitmap4 *)BG_BITMAP1_VRAM)
-#define bg_bitmap5a         (*(Bitmap5 *)BG_BITMAP0_VRAM)
-#define bg_bitmap5b         (*(Bitmap5 *)BG_BITMAP1_VRAM)
-
-/** Color conversion macro  */
-#define RGB(r,g,b)          ( (r)<<0 | (g)<<5 | (b)<<10 )
-
-/** BG Affine Transformation Destination Data Structure */
-typedef struct {
-    int16_t H_DiffX;        /**< Line Direction X Coordinate Difference     */
-    int16_t V_DiffX;        /**< Vertical Direction X Coordinate Difference */
-    int16_t H_DiffY;        /**< Line Direction Y Coordinate Difference     */
-    int16_t V_DiffY;        /**< Vertical Direction Y Coordinate Difference */
-    int32_t StartX;         /**< Start X Coordinate                         */
-    int32_t StartY;         /**< Start Y Coordinate                         */
-} BgAffineDestData;
-
-typedef volatile BgAffineDestData   vBgAffineDestData;
-#define rBg2Affine          (*(vBgAffineDestData *)0x4000020)
-
-/** 256 colors for background(s) */
-#define bg_palette          (*(Palette *)(GBA_PAL_RAM_ADDR))
-
-
-int  _wherex;                /**< Screen X coordinate */
-int  _wherey;                /**< Screen Y coordinate */
-int  _textattr;              /**< Text attribute      */
-
-/*
- * Forward reference
- */
-static void gba_initconio(void);
-
-/*---------------------------------------------------------------------------*
- *  Defaultfont                                                              *
- *---------------------------------------------------------------------------*/
-#include "defaultfont.h"
-
-/**
- *  @brief gba_gotoxy function set screeen xy-coordinates
- *
- *  @param  _x screen x coordinate
- *  @param  _y screen y coordinate
- *  @return None
- */
-void gba_gotoxy(int _x, int _y)
-{
-    _wherex = _x;
-    _wherey = _y;
-}
-
-
-/**
- *  @brief gba_putchar function writes char-data to screen memory.
- *
- *  Char code is index to font table.
- *
- *  Input parameters:   char, attribute and cordinates
- *  @param  c character code
- *  @param  textattr text attribute
- *  @param  x screen x coordinate
- *  @param  y screen y coordinate
- *  @return None
- */
-static void gba_putchar(char c, int textattr, int x, int y)
-{
-  int       f = textattr & 0x0F;
-  int       b = textattr >> 4;
-  uint32_t  fmask = f | f<<8 | f<<16 | f<<24;
-  uint32_t  bmask = b | b<<8 | b<<16 | b<<24;
-  uint32_t  *dest = (uint32_t *)&bg_bitmap4a[((y<<1) + y) << 1][x<<2];
-  const uint32_t  *src = (uint32_t *)&(font3x5[(int)c]);
-  uint32_t s;
-
-  s = *src++;
-  *dest = (fmask&s) | (bmask&~s);
-  dest += GBA_LCD_WIDTH/sizeof(uint32_t);
-
-  s = *src++;
-  *dest = (fmask&s) | (bmask&~s);
-  dest += GBA_LCD_WIDTH/sizeof(uint32_t);
-
-  s = *src++;
-  *dest = (fmask&s) | (bmask&~s);
-  dest += GBA_LCD_WIDTH/sizeof(uint32_t);
-
-  s = *src++;
-  *dest = (fmask&s) | (bmask&~s);
-  dest += GBA_LCD_WIDTH/sizeof(uint32_t);
-
-  s = *src++;
-  *dest = (fmask&s) | (bmask&~s);
-  dest += GBA_LCD_WIDTH/sizeof(uint32_t);
-
-  s = *src++;
-  *dest = (fmask&s) | (bmask&~s);
-  dest += GBA_LCD_WIDTH/sizeof(uint32_t);
-}
-
-
-/**
- *  @brief gba_textattr function set textattribute
- *
- *  @param  _attr text attribute
- *  @return None
- */
-void gba_textattr(int _attr)
-{
-  _textattr = _attr;
-}
-
-/**
- *  @brief gba_textbackground function set text background color
- *
- *  @param  _color backround color
- *  @return None
- *
- */
-void gba_textbackground(int _color)
-{
-  _textattr = (_textattr & 0x0F) | (_color << 4);
-}
-
-/**
- *  @brief gba_textcolor function set text color
- *
- *  @param  _colour text color
- *  @return None
- */
-void gba_textcolor(int _color)
-{
-  _textattr = (_textattr & 0xF0) | (_color);
-}
-
-
-/**
- *  @brief gba_clearline function clear line number y
- *
- *  Line is filled with spaces
- *
- *  @param  y line number
- *  @return None
- */
-static void gba_clearline(int y)
-{
-  int x;
-
-  for (x=0 ; x<=W ; x++) {
-     gba_putchar(0, _textattr, x, y);
-  }
-}
-
-/**
- *  @brief gba_nextline function moves cursor to next line and clears it
- *
- *  @param  None
- *  @return None
- */
-static void gba_nextline(void)
-{
-    _wherex = 0;
-    if (++_wherey >= H) {
-       _wherey = 0;
-    }
-    gba_clearline(_wherey);
-}
-
-/**
- *  @brief gba_clrscr function clear screen
- *
- *  @param  None
- *  @return None
- */
-void gba_clrscr(void)
-{
-    int y;
-
-    for (y=0 ; y<=H ; y++) {
-       gba_clearline(y);
-    }
-    gba_gotoxy(0,0);
-}
-
-/**
- *  @brief gba_put function convert ascii char to font index and
- *  write char to screen memory
- *
- *  @param  _c character code
- *  @return None
- */
-static void gba_put(char _c)
-{
-  /* We have save some memory with reduced fonts */
-  _c = _c & 0x7F;   /* no extened chars */
-  _c = _c - 0x20;   /* no cntr chars    */
-  gba_putchar(_c, _textattr, _wherex, _wherey);
-}
-
-
-/**
- *  @brief gba_putch function write ascii chars to screen
- *
- *  @param  _c character code
- *  @return None
- */
-void gba_putch(char _c)
-{
-    switch (_c) {
-        case ASCII_LF:
-            gba_nextline();
-            break;
-        case ASCII_CR:
-            gba_gotoxy(0, _wherey);
-            break;
-        default:
-            gba_put(_c);
-            if (++_wherex >= W)
-            {
-               gba_nextline();
-            }
-            break;
-    }
-    return;
-}
-
-/**
- *  @brief gba_puts function write ascii string to screen
- *
- *  @param  _str ASCII string
- *  @return None
- */
-void gba_puts(const char *_str)
-{
-    while (*_str) {
-       gba_putch(*_str++);
-    }
-    return;
-}
-
-/**
- *  @brief gba_printf function do formated printf
- *
- *  @param  _format printf format string
- *  @param  ... parameters specified in format string
- *  @return None
- */
-int gba_printf(const char *_format, ...)
-{
-    char s[256];
-    va_list marker;
-    va_start(marker, _format);
-    int r = vsprintf(s, _format, marker);
-    va_end(marker);
-    gba_puts(s);
-    return r;
-}
-
-/**
- *  @brief gba_initconio function initialize console
- *
- *  @param  None
- *  @return None
- */
-static void gba_initconio(void)
-{
-    GBA_REG_DISPCNT = GBA_DISP_MODE_4 | GBA_DISP_BG2_ON;/*  256 color bitmapped mode */
-    const BgAffineDestData bgAffineReset = {256,0,0,256,0,-256*2};
-    rBg2Affine = bgAffineReset;
-    bg_palette[BLACK       ] =  RGB( 0, 0, 0);   /*  BLACK */
-    bg_palette[BLUE        ] =  RGB( 0, 0,16);   /*  BLUE */
-    bg_palette[GREEN       ] =  RGB( 0,16, 0);   /*  GREEN */
-    bg_palette[CYAN        ] =  RGB( 0,16,16);   /*  CYAN */
-    bg_palette[RED         ] =  RGB(16, 0, 0);   /*  RED */
-    bg_palette[MAGENTA     ] =  RGB(16, 0,16);   /*  MAGENTA */
-    bg_palette[BROWN       ] =  RGB(16,16, 0);   /*  BROWN */
-    bg_palette[LIGHTGRAY   ] =  RGB(24,24,24);   /*  LIGHTGRAY */
-    bg_palette[DARKGRAY    ] =  RGB(16,16,16);   /*  DARKGRAY */
-    bg_palette[LIGHTBLUE   ] =  RGB( 0, 0,31);   /*  LIGHTBLUE */
-    bg_palette[LIGHTGREEN  ] =  RGB( 0,31, 0);   /*  LIGHTGREEN */
-    bg_palette[LIGHTCYAN   ] =  RGB( 0,31,31);   /*  LIGHTCYAN */
-    bg_palette[LIGHTRED    ] =  RGB(31, 0, 0);   /*  LIGHTRED */
-    bg_palette[LIGHTMAGENTA] =  RGB(31, 0,31);   /*  LIGHTMAGENTA */
-    bg_palette[YELLOW      ] =  RGB(31,31, 0);   /*  YELLOW */
-    bg_palette[WHITE       ] =  RGB(31,31,31);   /*  WHITE */
-    gba_textattr(0);
-    gba_textcolor(DEF_TEXTCOLOR);
-    gba_textbackground(DEF_TEXTBACKGROUND);
-    gba_clrscr();
-}
-
-/**
- *  @brief gba_textmode function set console mode
- *
- *  @param  _mode console mode code
- *  @return None
- */
-void gba_textmode(int _mode)
-{
-  switch (_mode) {
-    case CO60: {
-      gba_initconio();
-      break;
-    }
-  }
-}
-
-
-/**
- *  @brief delay_loop function is simple delay loop
- *
- *  @param  count loop counter
- *  @return None
- */
-static void delay_loop(unsigned int count)
-{
-  int i;
-
-  for (i = 0; i<count; i++) i = i;
-}
-
-static unsigned char inputch = ASCII_CR;    /**< input character value */
-/**
- *  @brief gba_getch function read char from game pad keys
- *
- *  Character input is done with GBA buttons,
- *      up-down-left-right/A/B/R/L/Select/Start
- *  - Select-key accept selected character
- *  - Start-key read CR (Enter)
- *  - A-key select 'A' character
- *  - B-key select 'Z' character
- *  - R-key select '1' character
- *  - L-key select '9' character
- *  - up-key increment character ('A'->'B')
- *  - down-key decrement character ('B'-'A')
- *  - left-key change set of character ('!'->'A'->'a')
- *  - right-key change set of character ('a'->'A'->'!')
- *
- *  @param  None
- *  @return Selected char code
- */
-int gba_getch(void)
-{
-  int  keyx, key  = 0;
-
-  while(1) {
-    key = GBA_KEY();
-    while ( (keyx=GBA_KEY())==key );
-    switch (key) {
-      case GBA_KEY_SELECT:
-	gba_put(inputch);
-	return inputch;
-	break;
-      case GBA_KEY_START:
-	gba_put(' ');
-	inputch = ASCII_CR;
-	return inputch;
-	break;
-      case GBA_KEY_A:
-	inputch = 'A';
-	break;
-      case GBA_KEY_B:
-	inputch = 'Z';
-	break;
-      case GBA_KEY_UP:
-	if ((inputch-1) >= 0x20) inputch--;
-	break;
-      case GBA_KEY_DOWN:
-	if ((inputch+1) <=  0x7E) inputch++;
-	break;
-      case GBA_KEY_LEFT:
-	if ((inputch - 0x20) >= 0x20) inputch -= 0x20;
-	break;
-      case GBA_KEY_RIGHT:
-	if ((inputch + 0x20) <= 0x7E) inputch += 0x20;
-	break;
-      case GBA_KEY_R:
-	inputch = '1';
-	break;
-      case GBA_KEY_L:
-	inputch = '9';
-	break;
-      default:
-	break;
-    }
-
-    gba_put(inputch);
-    delay_loop(1000);
-  }
-}
diff --git a/c/src/lib/libbsp/arm/gba/console/console.c b/c/src/lib/libbsp/arm/gba/console/console.c
deleted file mode 100644
index 35ec017..0000000
--- a/c/src/lib/libbsp/arm/gba/console/console.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/**
- *  @file console.c
- *
- *  This file contains the GBA console I/O package.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <bsp.h>
-#include <rtems/bspIo.h>
-#include <rtems/libio.h>
-#include <rtems/termiostypes.h>
-#include <termios.h>
-#include <bsp/irq.h>
-#include <gba.h>
-#include <conio.h>
-
-/**
- *  @brief gba_pollRead function read char
- *
- *  @param  minor unused
- *  @return character code
- */
-static int gba_pollRead(int minor)
-{
-  return (gba_getch());
-}
-
-/**
- *  @brief gba_write function writes chars
- *
- *  Input parameters:   minor code, buffer pointer and lenght
- *  @param  minor unused
- *  @param  *buf buffer pointer
- *  @param  len lenght of buffer
- *  @return character code
- *
- */
-static ssize_t gba_write(int minor, const char *buf, size_t len)
-{
-  int i;
-
-  for (i=0;i<len;i++) {
-    gba_putch((unsigned short)buf[i]);
-  }
-  return len;
-}
-
-/**
- *  @brief gba_setAttributes function is empty
- *
- *  @param  minor unused
- *  @param  *t unused
- *  @return constant 0
- */
-static int gba_setAttributes(int minor, const struct termios *t)
-{
-  return 0;
-}
-
-/** BSP_output_char for printk support */
-BSP_output_char_function_type     BSP_output_char = (BSP_output_char_function_type)     gba_putch;
-/** BSP_poll_char for printk support */
-BSP_polling_getchar_function_type BSP_poll_char   = gba_getch;
-
-/**
- *  @brief Console device driver INITIALIZE entry point
- *
- *  Initilizes the I/O console driver.
- *
- *  @param  major diver major number
- *  @param  minor driver minor mumber
- *  @param  *arg pointer to parameters
- *  @return status code
- */
-rtems_device_driver
-console_initialize(
-  rtems_device_major_number  major,
-  rtems_device_minor_number  minor,
-  void                      *arg
-)
-{
-  rtems_status_code status;
-
-  /* Set up TERMIOS */
-  rtems_termios_initialize ();
-
-  /* Do device-specific initialization  */
-  /* Already done in bspstart.c -> gba_textmode(CO60); */
-
-  /* Register the device */
-  status = rtems_io_register_name ("/dev/console", major, 0);
-  if (status != RTEMS_SUCCESSFUL) {
-    printk("Error registering console device!\n");
-    rtems_fatal_error_occurred (status);
-  }
-
-  printk("Initialized GBA console\n\n");
-
-  return RTEMS_SUCCESSFUL;
-}
-
-/**
- *  @brief console_first_open function is empty
- *
- *  @param  major diver major number
- *  @param  minor driver minor mumber
- *  @param  *arg pointer to parameters
- *  @return status code
- */
-static int console_first_open(int major, int minor, void *arg)
-{
-  return 0;
-}
-
-/**
- *  @brief console_last_close function is empty
- *
- *  @param  major diver major number
- *  @param  minor driver minor mumber
- *  @param  *arg pointer to parameters
- *  @return status code
- */
-static int console_last_close(int major, int minor, void *arg)
-{
-  return 0;
-}
-
-/**
- *  @brief Console device driver OPEN entry point
- *
- *  @param  major diver major number
- *  @param  minor driver minor mumber
- *  @param  *arg pointer to parameters
- *  @return status code
- */
-rtems_device_driver
-console_open(
-  rtems_device_major_number major,
-  rtems_device_minor_number minor,
-  void                      *arg
-)
-{
-  rtems_status_code              status;
-  static rtems_termios_callbacks cb =
-  {
-    console_first_open,         /* firstOpen     */
-    console_last_close,         /* lastClose     */
-    gba_pollRead,               /* pollRead      */
-    gba_write,                  /* write         */
-    gba_setAttributes,          /* setAttributes */
-    NULL,                       /* stopRemoteTx  */
-    NULL,                       /* startRemoteTx */
-    TERMIOS_POLLED              /* 1 = outputUsesInterrupts */
-  };
-
-  status = rtems_termios_open (major, minor, arg, &cb);
-
-  if (status != RTEMS_SUCCESSFUL) {
-    printk("Error openning console device\n");
-    return status;
-  }
-
-  return RTEMS_SUCCESSFUL;
-}
-
-/**
- *  @brief Console device driver CLOSE entry point
- *
- *  @param  major diver major number
- *  @param  minor driver minor mumber
- *  @param  *arg pointer to parameters
- *  @return status code
- */
-rtems_device_driver
-console_close(
-  rtems_device_major_number major,
-  rtems_device_minor_number minor,
-  void                      *arg
-)
-{
-  rtems_device_driver res = RTEMS_SUCCESSFUL;
-
-  res =  rtems_termios_close (arg);
-
-  return res;
-}
-
-/**
- *  @brief Console device driver READ entry point.
- *
- *  Read characters from the I/O console.
- *
- *  @param  major diver major number
- *  @param  minor driver minor mumber
- *  @param  *arg pointer to parameters
- *  @return status code
- */
-rtems_device_driver
-console_read(
-  rtems_device_major_number major,
-  rtems_device_minor_number minor,
-  void                      *arg
-)
-{
-  return rtems_termios_read (arg);
-}
-
-/**
- *  @brief Console device driver WRITE entry point.
- *
- *  Write characters to the I/O console.
- *
- *  @param  major diver major number
- *  @param  minor driver minor mumber
- *  @param  *arg pointer to parameters
- *  @return status code
-*/
-rtems_device_driver
-console_write(
-  rtems_device_major_number major,
-  rtems_device_minor_number minor,
-  void                      *arg
-)
-{
-  return rtems_termios_write (arg);
-}
-
-/**
- *  @brief Handle ioctl request.
- *
- *  @param  major diver major number
- *  @param  minor driver minor mumber
- *  @param  *arg pointer to parameters
- *  @return status code
- */
-rtems_device_driver
-console_control(
-  rtems_device_major_number major,
-  rtems_device_minor_number minor,
-  void                      *arg
-)
-{
-  return rtems_termios_ioctl (arg);
-}
diff --git a/c/src/lib/libbsp/arm/gba/console/defaultfont.h b/c/src/lib/libbsp/arm/gba/console/defaultfont.h
deleted file mode 100644
index b06b896..0000000
--- a/c/src/lib/libbsp/arm/gba/console/defaultfont.h
+++ /dev/null
@@ -1,602 +0,0 @@
-/**
- * @file
- *
- * @ingroup arm_gba
- *
- * @brief Default font definitions.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-/** Font array dot value   */
-#define  X  255
-/** Generate font row data */
-#define GEN_FONT_DATA(a,b,c,d)  ( ((d)<<24) | ((c)<<16) | ((b)<<8) | ((a)<<0) )
-/** array for 3x5 font, font screen size is 4x6 */
-static const unsigned long	font3x5[256][6] =
-	{	{		/* ' ' - ascii:0x20 font:0x00   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '!' - ascii:0x21 font:0x01   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* '"' - ascii:0x22 font:0x02   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '#' - ascii:0x23 font:0x03   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* '$' - ascii:0x24 font:0x04    */
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* '%' - ascii:0x25 font:0x05   */
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,0  )
-		},{		/* '&' - ascii:0x26 font:0x06   */
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* ''' - ascii:0x27 font:0x07   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '(' - ascii:0x28 font:0x08   */
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,X  )
-		},{		/* ')' - ascii:0x29 font:0x09   */
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  )
-		},{		/* '*' - ascii:0x2A font:0x0A   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '+' - ascii:0x2B font:0x0B   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '´' - ascii:0x2C font:0x0C   */
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '-' - ascii:0x2D font:0x0D   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '.' - ascii:0x2E font:0x0E   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		},{		/* '/' - ascii:0x2F font:0x0F   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  X,0,0,0  )
-		},{		/* '0' - ascii:0x30 font:0x10   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '1' - ascii:0x31 font:0x11   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '2' - ascii:0x32 font:0x12   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '3' - ascii:0x33 font:0x13   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '4' - ascii:0x34 font:0x14   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,X  )
-		},{		/* '5' - ascii:0x35 font:0x15   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '6' - ascii:0x36 font:0x16   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '7' - ascii:0x37 font:0x17   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* '8' - ascii:0x38 font:0x18   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '9' - ascii:0x39 font:0x19   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* ':' - ascii:0x3A font:0x1A   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		},{		/* ';' - ascii:0x3B font:0x1B   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		},{		/* '<' - ascii:0x3C font:0x1C   */
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,X  )
-		},{		/* '=' - ascii:0x3D font:0x1D   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '>' - ascii:0x3E font:0x1E   */
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  )
-		},{		/* '?' - ascii:0x3F font:0x1F   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* '@' - ascii:0x40 font:0x20   */
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,X  )
-		},{		/* 'A' - ascii:0x41 font:0x21   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'B' - ascii:0x42 font:0x22   */
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  )
-		},{		/* 'C' - ascii:0x43 font:0x23   */
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,X  )
-		},{		/* 'D' - ascii:0x44 font:0x24   */
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		},{		/* 'E' - ascii:0x45 font:0x25   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* 'F' - ascii:0x46 font:0x26   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		},{		/* 'G' - ascii:0x47 font:0x27   */
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  )
-		},{		/* 'H' - ascii:0x48 font:0x28   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'I' - ascii:0x49 font:0x29   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* 'J' - ascii:0x4A font:0x2A   */
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* 'K' - ascii:0x4B font:0x2B   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'L' - ascii:0x4C font:0x2C   */
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* 'M' - ascii:0x4D font:0x2D   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'N' - ascii:0x4E font:0x2E   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'O' - ascii:0x4F font:0x2F   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* 'P' - ascii:0x50 font:0x30   */
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		},{		/* 'Q' - ascii:0x51 font:0x31   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  )
-		},{		/* 'R' - ascii:0x52 font:0x33   */
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'S' - ascii:0x53 font:0x33   */
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  )
-		},{		/* 'T' - ascii:0x54 font:0x34   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		},{		/* 'U' - ascii:0x55 font:0x35   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* 'V' - ascii:0x56 font:0x36   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		},{		/* 'W' - ascii:0x57 font:0x37   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		},{		/* 'X' - ascii:0x58 font:0x38   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'Y' - ascii:0x59 font:0x39   */
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		},{		/* 'Z' - ascii:0x5A font:0x3A   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '[' - ascii:0x5B font:0x3B   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '\' - ascii:0x5C font:0x3C   */
-		GEN_FONT_DATA(  X,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* ']' - ascii:0x5D font:0x3D   */
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '^' - ascii:0x5E font:0x3E   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '_' - ascii:0x5F font:0x3F   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '´' - ascii:0x60 font:0x30   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* 'a' - ascii:0x31 font:0x31   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* 'b' - ascii:0x62 font:0x32   */
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  )
-		},{		/* 'c' - ascii:0x63 font:0x33   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,X  )
-		},{		/* 'd' - ascii:0x64 font:0x34   */
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		},{		/* 'e' - ascii:0x65 font:0x35   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,0,X,X  )
-		},{		/* 'f' - ascii:0x66 font:0x36   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		},{		/* 'g' - ascii:0x67 font:0x37   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,X,0  )
-		},{		/* 'h' - ascii:0x68 font:0x38   */
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'i' - ascii:0x69 font:0x39   */
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* 'j' - ascii:0x6A font:0x3A   */
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* 'k' - ascii:0x6B font:0x3B   */
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'l' - ascii:0x6C font:0x3C   */
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* 'm' - ascii:0x6D font:0x3D   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'n' - ascii:0x6E font:0x3E   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'o' - ascii:0x6F font:0x6F   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  )
-		},{		/* 'p' - ascii:0x70 font:0x40   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		},{		/* 'q' - ascii:0x71 font:0x41   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  )
-		},{		/* 'r' - ascii:0x72 font:0x43   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  )
-		},{		/* 's' - ascii:0x73 font:0x43   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,X,X,0  )
-		},{		/* 't' - ascii:0x74 font:0x44   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,X  ),
-		},{		/* 'u' - ascii:0x75 font:0x45   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,X  )
-		},{		/* 'v' - ascii:0x76 font:0x46   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		},{		/* 'w' - ascii:0x77 font:0x47   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		},{		/* 'x' - ascii:0x78 font:0x48   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,X  )
-		},{		/* 'y' - ascii:0x79 font:0x49   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		},{		/* 'z' - ascii:0x7A font:0x4A   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,X,X  )
-		},{		/* '{' - ascii:0x7B font:0x4B   */
-		GEN_FONT_DATA(  0,0,X,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,X,X  )
-		},{		/* '\' - ascii:0x7C font:0x4C   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* '}' - ascii:0x7D font:0x4D   */
-		GEN_FONT_DATA(  0,X,X,0  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,X,0  ),
-		GEN_FONT_DATA(  0,X,X,0  )
-		},{		/* '~' - ascii:0x7E font:0x4E   */
-		GEN_FONT_DATA(  0,0,0,0  ),
-		GEN_FONT_DATA(  0,X,0,0  ),
-		GEN_FONT_DATA(  0,X,X,X  ),
-		GEN_FONT_DATA(  0,0,0,X  ),
-		GEN_FONT_DATA(  0,0,0,0  )
-		},{		/* DEL - ascii:0x7F font:0x4F   */
-		GEN_FONT_DATA(  X,X,X,X  ),
-		GEN_FONT_DATA(  X,X,X,X  ),
-		GEN_FONT_DATA(  X,X,X,X  ),
-		GEN_FONT_DATA(  X,X,X,X  ),
-		GEN_FONT_DATA(  X,X,X,X  )
-		}
-	};
diff --git a/c/src/lib/libbsp/arm/gba/include/arm_mode_bits.h b/c/src/lib/libbsp/arm/gba/include/arm_mode_bits.h
deleted file mode 100644
index bd9630f..0000000
--- a/c/src/lib/libbsp/arm/gba/include/arm_mode_bits.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file
- *
- * @ingroup arm_gba
- *
- * @brief ARM status register mode bits.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef __ARMMODEBITS_H
-#define __ARMMODEBITS_H
-
-/*-----------------------------------------------------------------------------
- * Definitions
- ----------------------------------------------------------------------------*/
-#define Mode_USR             0x10
-#define Mode_FIQ             0x11
-#define Mode_IRQ             0x12
-#define Mode_SVC             0x13
-#define Mode_ABT             0x17
-#define Mode_ABORT           0x17
-#define Mode_UNDEF           0x1B
-#define Mode_SYS             0x1F      /**< only available on ARM Arch v4 */
-#define Mode_Bits            0x1F      /**< mask for mode bits */
-#define ModePriv             Mode_SVC  /**< used supervisor mode */
-
-#define I_Bit                0x80
-#define F_Bit                0x40
-#define Int_Bits             0xC0
-
-#define Mode_SVC_MIRQ        (Mode_SVC | I_Bit | F_Bit)
-#define Mode_SVC_UIRQ        (Mode_SVC)
-#define Mode_IRQ_MIRQ        (Mode_SVC | I_Bit | F_Bit)
-#define Mode_IRQ_UIRQ        (Mode_SVC)
-
-#endif /* __ARMMODEBITS_H */
-
diff --git a/c/src/lib/libbsp/arm/gba/include/asm_macros.h b/c/src/lib/libbsp/arm/gba/include/asm_macros.h
deleted file mode 100644
index 4cfadb8..0000000
--- a/c/src/lib/libbsp/arm/gba/include/asm_macros.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file
- *
- * @ingroup arm_gba
- *
- * @brief ASM macros.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-/*-----------------------------------------------------------------------------*
- * Macros
- *-----------------------------------------------------------------------------*/
-#ifdef __asm__
-#define PUBLIC_ARM_FUNCTION(label)   .global label ; \
-                                     .type label, function ; \
-                                     .arm ; \
-                                     label:
-
-#define PUBLIC_THUMB_FUNCTION(label) .global label ; \
-                                     .type label, function ; \
-                                     .thumb_func ; \
-                                     label:
-
-#define STATIC_ARM_FUNCTION(label)   .type label, function ; \
-                                     .arm ; \
-                                     label:
-
-#define STATIC_THUMB_FUNCTION(label) .type label, function ; \
-                                     .thumb_func ; \
-                                     label:
-
-#define OBJECT(label)                .global label ; \
-                                     .type label, object ; \
-                                     label:
-
-#define STATIC_OBJECT(label)         .type label, object ; \
-                                     label:
-
-#define WEAK_OBJECT(label)           .weak label ; \
-                                     .type label, object ; \
-                                     label:
-
-#define LABEL_END(label)             .L##label##_end: ; \
-                                     .size label, .L##label##_end - label
-
-#endif
diff --git a/c/src/lib/libbsp/arm/gba/include/bsp.h b/c/src/lib/libbsp/arm/gba/include/bsp.h
deleted file mode 100644
index fa7df74..0000000
--- a/c/src/lib/libbsp/arm/gba/include/bsp.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @file 
- *
- * @ingroup arm_gba
- *
- * @brief Global BSP definitions.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004
- *      Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef LIBBSP_ARM_GBA_H
-#define LIBBSP_ARM_GBA_H
-
-#include <bspopts.h>
-#include <bsp/default-initial-extension.h>
-
-#include <rtems.h>
-#include <rtems/iosupp.h>
-#include <rtems/console.h>
-#include <rtems/clockdrv.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define BSP_FEATURE_IRQ_EXTENSION
-
-/** Define operation count for Tests */
-#define OPERATION_COUNT 10
-
-/** gba_zero_memory library function in start.S  */
-extern void gba_zero_memory(int start, int stop);
-/** gba_move_memory library function in start.S  */
-extern void gba_move_memory(int from, int toStart, int toEnd);
-/** gba_set_memory library function in start.S  */
-extern void gba_set_memory(int start, int stop, int data);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* __BSP_H_ */
-/**
- * @defgroup arm_gba GBA Support
- *
- * @ingroup bsp_arm
- *
- * @brief GBA support package.
- */
-
diff --git a/c/src/lib/libbsp/arm/gba/include/conio.h b/c/src/lib/libbsp/arm/gba/include/conio.h
deleted file mode 100644
index 8b46994..0000000
--- a/c/src/lib/libbsp/arm/gba/include/conio.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * @file
- *
- * @ingroup gba_conio
- *
- * @brief GBA conio I/O package.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _CONIO_H
-#define _CONIO_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup gba_conio GBA Conio I/O
- *
- * @ingroup arm_gba
- *
- * @brief GBA Conio I/O support.
- */
-
-/*---------------------------------------------------------------------------*
- * Includes                                                                  *
- *---------------------------------------------------------------------------*/
-#include <gba.h>
-
-/*---------------------------------------------------------------------------*
- * Defines                                                                   *
- *---------------------------------------------------------------------------*/
-#define ASCII_BEL       0x07            /**< bell             */
-#define ASCII_BS        0x08            /**< backspace        */
-#define ASCII_TAB       0x09            /**< horizontal tab   */
-#define ASCII_LF        0x0A            /**< line feed        */
-#define ASCII_CR        0x0D            /**< carriage return  */
-#define ASCII_XON       0x11            /**< control-Q        */
-#define ASCII_XOFF      0x13            /**< control-S        */
-#define ASCII_ESC       0x1B            /**< escape           */
-
-
-enum TEXT_MODES
-{
-    CO60 = 0,                           /**< 60x26 (3x5 font) */
-    MAXMODES
-};
-
-enum COLORS
-{
-    BLACK,
-    BLUE,
-    GREEN,
-    CYAN,
-    RED,
-    MAGENTA,
-    BROWN,
-    LIGHTGRAY,
-    DARKGRAY,
-    LIGHTBLUE,
-    LIGHTGREEN,
-    LIGHTCYAN,
-    LIGHTRED,
-    LIGHTMAGENTA,
-    YELLOW,
-    WHITE,
-    MAXCOLORS
-};
-
-#define  DEF_TEXTCOLOR       BLACK
-#define  DEF_TEXTBACKGROUND  WHITE
-
-/*---------------------------------------------------------------------------*
- * Prototypes                                                                *
- *---------------------------------------------------------------------------*/
-void    gba_textmode(int _mode);
-void    gba_clrscr(void);
-void    gba_textattr(int _attr);
-void    gba_textbackground(int _color);
-void    gba_textcolor(int _color);
-void    gba_putch(char _c);
-void    gba_puts(const char *_str);
-int     gba_printf(const char *_format, ...);
-void    gba_gotoxy(int _x, int _y);
-int     gba_getch(void);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _CONIO_H */
diff --git a/c/src/lib/libbsp/arm/gba/include/gba.h b/c/src/lib/libbsp/arm/gba/include/gba.h
deleted file mode 100644
index 4e25093..0000000
--- a/c/src/lib/libbsp/arm/gba/include/gba.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * @file
- *
- * @ingroup arm_gba
- *
- * @brief GameBoy Advance definitions.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _GBA_H
-#define _GBA_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <gba_registers.h>
-
-/*---------------------------------------------------------------------------*
- * Clock                                                                     *
- *---------------------------------------------------------------------------*/
-#define  __ClockFrequency   16780000L    /**< ClockFreguency in Hz           */
-#define  __TimPreScaler     1024L        /**< Prescaler value 1,64,256,1024  */
-
-/*---------------------------------------------------------------------------*
- * Activation defines                                                        *
- *---------------------------------------------------------------------------*/
-/**
- * Multiboot/Cart boot Selection.
- *
- * If the variable __gba_multiboot is defined
- * (probably should be in your main project file) then code
- * is generated which will run as a multiboot image (code starts
- * at 0x02000000) or as a normal flash cart / emulator image.
- * (i.e. start.S copies code from ROM to EWRAM if started in cart
- * or emulator.) If this variable is not defined then code is
- * generated for flash cart / emulator only operation (code starts
- * at 0x08000000).
- */
-#define MULTIBOOT volatile const unsigned short __gba_multiboot;
-
-/**
- * IWRAM/EWRAM data Selection.
- *
- * If the variable __gba_iwram_data is defined
- * (probably should be in your main project file) then code
- * is generated which will allocate data section in IWRAM
- * (data starts at 0x03000080).
- * If this variable is not defined then data sections is
- * allocated in EWRAM (data starts at 0x02000000).
- */
-#define IWRAMDATA volatile const unsigned short __gba_iwram_data;
-
-/**
- * IWRAM/EWRAM bss Selection.
- *
- * If the variable __gba_iwram_bss is defined
- * (probably should be in your main project file) then code
- * is generated which will allocate bss section in IWRAM
- * (data starts at 0x03000080).
- * If this variable is not defined then bss sections is
- * allocated in EWRAM (data starts at 0x02000000).
- */
-#define IWRAMBSS volatile const unsigned short __gba_iwram_bss;
-
-
-/*---------------------------------------------------------------------------*
- *  Attributes                                                               *
- *---------------------------------------------------------------------------*/
-#define CODE_IN_ROM   __attribute__ ((section (".text"), long_call))
-#define CODE_IN_IWRAM __attribute__ ((section (".iwram"), long_call))
-#define IN_IWRAM      __attribute__ ((section (".iwram")))
-#define IN_EWRAM      __attribute__ ((section (".ewram")))
-
-/*---------------------------------------------------------------------------*
- * Console Keypad                                                            *
- *---------------------------------------------------------------------------*/
-#define OK_KEY (0==0)  /**< TRUE  */
-#define NO_KEY (0==1)  /**< FALSE */
-#define GBA_KEYS_PRESSED(keys) (( ((~GBA_REG_P1) & (keys)) == (keys)) ? (OK_KEY) : (NO_KEY))
-#define GBA_ANY_KEY(keys)      (( ((~GBA_REG_P1) & (keys)) != 0) ? (OK_KEY) : (NO_KEY))
-#define GBA_KEY()              ((~GBA_REG_P1)&GBA_KEY_ALL)
-
-/*---------------------------------------------------------------------------*
- * Console Screen                                                            *
- *---------------------------------------------------------------------------*/
-#define GBA_LCD_WIDTH           240
-#define GBA_LCD_HEIGHT          160
-#define GBA_MODE5_WIDTH         160
-#define GBA_MODE5_HEIGHT        128
-#define GBA_LCD_ASPECT          ((float)(GBA_LCD_WIDTH / GBA_LCD_HEIGHT))
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/c/src/lib/libbsp/arm/gba/include/gba_registers.h b/c/src/lib/libbsp/arm/gba/include/gba_registers.h
deleted file mode 100644
index 4be8543..0000000
--- a/c/src/lib/libbsp/arm/gba/include/gba_registers.h
+++ /dev/null
@@ -1,965 +0,0 @@
-/**
- *  @file
- *
- *  @ingroup gba_reg
- *
- *  @brief Register definitions.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-/*---------------------------------------------------------------------------+
-| THIS CODE WAS NOT MADE IN ASSOCIATION WITH NINTENDO AND DOES NOT MAKE
-| USE OF ANY INTELLECTUAL PROPERTY CLAIMED BY NINTENDO.
-|
-| GAMEBOY ADVANCE IS A TRADEMARK OF NINTENDO.
-|
-| THIS CODE HAS BEEN PROVIDED "AS-IS" WITHOUT A WARRANTY OF ANY KIND,
-| EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO IMPLIED
-| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.
-| THE ENTIRE RISK AS TO THE QUALITY OR PERFORMANCE OF THE CODE IS WITH YOU.
-|
-| IN NO EVENT, UNLESS AGREED TO IN WRITING, WILL ANY COPYRIGHT HOLDER,
-| OR ANY OTHER PARTY, BE HELD LIABLE FOR ANY DAMAGES RESULTING FROM
-| THE USE OR INABILITY TO USE THIS CODE.
-+----------------------------------------------------------------------------*/
-
-#ifndef _GBA_REGISTERS_H
-#define _GBA_REGISTERS_H
-
-#ifndef __asm__
-extern volatile unsigned int  *Regs;        /**< Chip registers              */
-#endif
-
-/**
- * @defgroup gba_reg Register Definitions
- *
- * @ingroup arm_gba
- *
- * @brief Register definitions.
- */
-
-
-/*---------------------------------------------------------------------------+
-|    General address definitions
-+----------------------------------------------------------------------------*/
-/* General Internal Memory */
-#define GBA_BIOS_ADDR        0x00000000  /**< GBA BIOS start address         */
-#define GBA_BIOS_END         0x00004000  /**< GBA BIOS end address           */
-#define GBA_EXT_RAM_ADDR     0x02000000  /**< On-board RAM start address     */
-#define GBA_EXT_RAM_END      0x02040000  /**< On-board RAM end address       */
-#define GBA_INT_RAM_ADDR     0x03000000  /**< In-chip RAM start address      */
-#define GBA_INT_RAM_END      0x03008000  /**< In-chip RAM end address        */
-#define GBA_IO_REGS_ADDR     0x04000000  /**< IO registers start address     */
-#define GBA_IO_REGS_END      0x04000400  /**< IO registers end address       */
-/* Internal Display Memory */
-#define GBA_PAL_RAM_ADDR     0x05000000  /**< PAL RAM start address          */
-#define GBA_PAL_RAM_END      0x05000400  /**< PAL RAM end address            */
-#define GBA_VRAM_ADDR        0x06000000  /**< VRAM start address             */
-#define GBA_VRAM_END         0x06180000  /**< VRAM end address               */
-#define GBA_OAM_ADDR         0x07000000  /**< OAM start address              */
-#define GBA_OAM_END          0x07000400  /**< OAM end address                */
-/* External Memory (Game Pak) */
-#define GBA_ROM0_ADDR        0x08000000  /**< Card ROM0 start address        */
-#define GBA_ROM1_ADDR        0x0A000000  /**< Card ROM1 start address        */
-#define GBA_ROM2_ADDR        0x0C000000  /**< Card ROM2 start address        */
-#define GBA_SRAM_ADDR        0x0E000000  /**< Card SRAM start address        */
-#define GBA_SRAM_END         0x0E010000  /**< Card SRAM end address          */
-/* Unused Memory Area */
-#define GBA_MAX_ADDR         0x10000000  /**< Upper 4bits of address bus unused */
-/* Memory pointers */
-#ifndef __asm__
-#define GBA_BASE_BIOS       (volatile unsigned char *)GBA_BIOS_ADDR    /**< BIOS - System ROM 16KBytes, protected */
-#define GBA_BASE_EXT_RAM    (volatile unsigned char *)GBA_EXT_RAM_ADDR /**< WRAM - On-board Work RAM 256KBytes    */
-#define GBA_BASE_INT_RAM    (volatile unsigned char *)GBA_INT_RAM_ADDR /**< WRAM - In-chip Work RAM 32KBytes      */
-#define GBA_BASE_IO_REGS    (volatile unsigned char *)GBA_IO_REGS_ADDR /**< I/O Registers                         */
-#define GBA_BASE_PAL_RAM    (volatile unsigned char *)GBA_PAL_RAM_ADDR /**< BG/OBJ Palette RAM 1KBytes            */
-#define GBA_BASE_VRAM       (volatile unsigned char *)GBA_VRAM_ADDR    /**< VRAM - Video RAM 96KBytes             */
-#define GBA_BASE_OAM        (volatile unsigned char *)GBA_OAM_ADDR     /**< OAM - OBJ Attribytes                  */
-#define GBA_BASE_ROM0       (volatile unsigned char *)GBA_ROM0_ADDR    /**< Card ROM 32MB                         */
-#define GBA_BASE_ROM1       (volatile unsigned char *)GBA_ROM1_ADDR    /**< Card ROM 32MB                         */
-#define GBA_BASE_ROM2       (volatile unsigned char *)GBA_ROM2_ADDR    /**< Card ROM 32MB                         */
-#define GBA_BASE_SRAM       (volatile unsigned char *)GBA_SRAM_ADDR    /**< Card SRAM 64KBytes                    */
-#endif
-/*---------------------------------------------------------------------------*
- *   Display Control
- *---------------------------------------------------------------------------*/
-#define GBA_DISP_BG_MODE_MASK    0x0007      /**< BG Mode       */
-#define GBA_DISP_ON_MASK         0x1f00      /**< OBJ BG ON     */
-#define GBA_DISP_WIN_MASK        0x6000      /**< Window ON     */
-
-#define GBA_DISP_BG_MODE_SHIFT   0
-#define GBA_DISP_ON_SHIFT        8
-#define GBA_DISP_WIN_SHIFT       13
-
-#define GBA_DISP_MODE_0          0x0000      /**< BG Mode 0     */
-#define GBA_DISP_MODE_1          0x0001      /**< BG Mode 1     */
-#define GBA_DISP_MODE_2          0x0002      /**< BG Mode 2     */
-#define GBA_DISP_MODE_3          0x0003      /**< BG Mode 3     */
-#define GBA_DISP_MODE_4          0x0004      /**< BG Mode 4     */
-#define GBA_DISP_MODE_5          0x0005      /**< BG Mode 5     */
-#define GBA_DISP_BMP_FRAME_NO    0x0010      /**< Bitmap Mode Display Frame     */
-#define GBA_DISP_OBJ_HOFF        0x0020      /**< OBJ Processing in H Blank OFF */
-#define GBA_DISP_OBJ_CHAR_2D_MAP 0x0000      /**< OBJ Character Data 2D Mapping */
-#define GBA_DISP_OBJ_CHAR_1D_MAP 0x0040      /**< OBJ Character Data 1D Mapping */
-#define GBA_DISP_LCDC_OFF        0x0080      /**< LCDC OFF       */
-#define GBA_DISP_BG0_ON          0x0100      /**< BG0 ON         */
-#define GBA_DISP_BG1_ON          0x0200      /**< BG1 ON         */
-#define GBA_DISP_BG2_ON          0x0400      /**< BG2 ON         */
-#define GBA_DISP_BG3_ON          0x0800      /**< BG3 ON         */
-#define GBA_DISP_BG_ALL_ON       0x0f00      /**< All BG ON      */
-#define GBA_DISP_OBJ_ON          0x1000      /**< OBJ ON         */
-#define GBA_DISP_OBJ_BG_ALL_ON   0x1f00      /**< All OBJ/BG ON  */
-#define GBA_DISP_WIN0_ON         0x2000      /**< Window 0 ON    */
-#define GBA_DISP_WIN1_ON         0x4000      /**< Window 1 ON    */
-#define GBA_DISP_WIN01_ON        0x6000      /**< Window 0,1 ON  */
-#define GBA_DISP_OBJWIN_ON       0x8000      /**< OBJ Window ON  */
-#define GBA_DISP_WIN_ALL_ON      0xe000      /**< All Window ON  */
-#define GBA_DISP_ALL_ON          0x7f00      /**< All ON         */
-
-#define GBA_BG_MODE_0            0
-#define GBA_BG_MODE_1            1
-#define GBA_BG_MODE_2            2
-#define GBA_BG_MODE_3            3
-#define GBA_BG_MODE_4            4
-#define GBA_BG_MODE_5            5
-
-#define GBA_BG0_ENABLE           1
-#define GBA_BG1_ENABLE           2
-#define GBA_BG2_ENABLE           4
-#define GBA_BG3_ENABLE           8
-#define GBA_OBJ_ENABLE          16
-
-#define GBA_OBJ_1D_MAP           1
-#define GBA_OBJ_2D_MAP           0
-
-
-/*---------------------------------------------------------------------------+
-|    LCD
-+----------------------------------------------------------------------------*/
-/* LCD I/O Register address offsets */
-#define GBA_DISPCNT             0x00000000   /**< LCD Control                */
-#define GBA_DISPSTAT            0x00000004   /**< General LCD Status (STAT,LYC) */
-#define GBA_VCOUNT              0x00000006   /**< Vertical Counter (LY)      */
-#define GBA_BG0CNT              0x00000008   /**< BG0 Control                */
-#define GBA_BG1CNT              0x0000000A   /**< BG1 Control                */
-#define GBA_BG2CNT              0x0000000C   /**< BG2 Control                */
-#define GBA_BG3CNT              0x0000000E   /**< BG3 Control                */
-#define GBA_BG0HOFS             0x00000010   /**< BG0 X-Offset               */
-#define GBA_BG0VOFS             0x00000012   /**< BG0 Y-Offset               */
-#define GBA_BG1HOFS             0x00000014   /**< BG1 X-Offset               */
-#define GBA_BG1VOFS             0x00000016   /**< BG1 Y-Offset               */
-#define GBA_BG2HOFS             0x00000018   /**< BG2 X-Offset               */
-#define GBA_BG2VOFS             0x0000001A   /**< BG2 Y-Offset               */
-#define GBA_BG3HOFS             0x0000001C   /**< BG3 X-Offset               */
-#define GBA_BG3VOFS             0x0000001E   /**< BG3 Y-Offset               */
-#define GBA_BG2PA               0x00000020   /**< BG2 Rotation/Scaling Parameter A (dx)  */
-#define GBA_BG2PB               0x00000022   /**< BG2 Rotation/Scaling Parameter B (dmx) */
-#define GBA_BG2PC               0x00000024   /**< BG2 Rotation/Scaling Parameter C (dy)  */
-#define GBA_BG2PD               0x00000026   /**< BG2 Rotation/Scaling Parameter D (dmy) */
-#define GBA_BG2X                0x00000028   /**< BG2 Reference Point X-Coordinate       */
-#define GBA_BG2X_L              0x00000028   /**< BG2 Reference Point X-Coordinate low   */
-#define GBA_BG2X_H              0x0000002A   /**< BG2 Reference Point X-Coordinate high  */
-#define GBA_BG2Y                0x0000002C   /**< BG2 Reference Point Y-Coordinate       */
-#define GBA_BG2Y_L              0x0000002C   /**< BG2 Reference Point Y-Coordinate low   */
-#define GBA_BG2Y_H              0x0000002E   /**< BG2 Reference Point Y-Coordinate high  */
-#define GBA_BG3PA               0x00000030   /**< BG3 Rotation/Scaling Parameter A (dx)  */
-#define GBA_BG3PB               0x00000032   /**< BG3 Rotation/Scaling Parameter B (dmx) */
-#define GBA_BG3PC               0x00000034   /**< BG3 Rotation/Scaling Parameter C (dy)  */
-#define GBA_BG3PD               0x00000036   /**< BG3 Rotation/Scaling Parameter D (dmy) */
-#define GBA_BG3X                0x00000038   /**< BG3 Reference Point X-Coordinate       */
-#define GBA_BG3X_L              0x00000038   /**< BG3 Reference Point X-Coordinate low   */
-#define GBA_BG3X_H              0x0000003A   /**< BG3 Reference Point X-Coordinate high  */
-#define GBA_BG3Y                0x0000003C   /**< BG3 Reference Point Y-Coordinate       */
-#define GBA_BG3Y_L              0x0000003C   /**< BG3 Reference Point Y-Coordinate low   */
-#define GBA_BG3Y_H              0x0000003E   /**< BG3 Reference Point Y-Coordinate hugh  */
-#define GBA_WIN0H               0x00000040   /**< Window 0 Horizontal Dimensions         */
-#define GBA_WIN1H               0x00000042   /**< Window 1 Horizontal Dimensions         */
-#define GBA_WIN0V               0x00000044   /**< Window 0 Vertical Dimensions           */
-#define GBA_WIN1V               0x00000046   /**< Window 1 Vertical Dimensions           */
-#define GBA_WININ               0x00000048   /**< Control Inside of Window(s)            */
-#define GBA_WINOUT              0x0000004A   /**< Control Outside of Windows & Inside of OBJ Window */
-#define GBA_MOSAIC              0x0000004C   /**< Mosaic Size                            */
-#define GBA_BLDCNT              0x00000050   /**< Color Special Effects Selection        */
-#define GBA_BLDMOD              0x00000050   /**< Color Special Effects Selection       X*/
-#define GBA_BLDALPHA            0x00000052   /**< Alpha Blending Coefficients            */
-#define GBA_COLEV               0x00000052   /**< Alpha Blending Coefficients           X*/
-#define GBA_BLDY                0x00000054   /**< Brightness (Fade-In/Out) Coefficient   */
-#define GBA_COLY                0x00000054   /**< Brightness (Fade-In/Out) Coefficient  X*/
-/* LCD I/O Register addresses */
-#define GBA_REG_DISPCNT_ADDR    GBA_IO_REGS_ADDR + GBA_DISPCNT
-#define GBA_REG_DISPSTAT_ADDR   GBA_IO_REGS_ADDR + GBA_DISPSTAT
-#define GBA_REG_VCOUNT_ADDR     GBA_IO_REGS_ADDR + GBA_VCOUNT
-#define GBA_REG_BG0CNT_ADDR     GBA_IO_REGS_ADDR + GBA_BG0CNT
-#define GBA_REG_BG1CNT_ADDR     GBA_IO_REGS_ADDR + GBA_BG1CNT
-#define GBA_REG_BG2CNT_ADDR     GBA_IO_REGS_ADDR + GBA_BG2CNT
-#define GBA_REG_BG3CNT_ADDR     GBA_IO_REGS_ADDR + GBA_BG3CNT
-#define GBA_REG_BG0HOFS_ADDR    GBA_IO_REGS_ADDR + GBA_BG0HOFS
-#define GBA_REG_BG0VOFS_ADDR    GBA_IO_REGS_ADDR + GBA_BG0VOFS
-#define GBA_REG_BG1HOFS_ADDR    GBA_IO_REGS_ADDR + GBA_BG1HOFS
-#define GBA_REG_BG1VOFS_ADDR    GBA_IO_REGS_ADDR + GBA_BG1VOFS
-#define GBA_REG_BG2HOFS_ADDR    GBA_IO_REGS_ADDR + GBA_BG2HOFS
-#define GBA_REG_BG2VOFS_ADDR    GBA_IO_REGS_ADDR + GBA_BG2VOFS
-#define GBA_REG_BG3HOFS_ADDR    GBA_IO_REGS_ADDR + GBA_BG3HOFS
-#define GBA_REG_BG3VOFS_ADDR    GBA_IO_REGS_ADDR + GBA_BG3VOFS
-#define GBA_REG_BG2PA_ADDR      GBA_IO_REGS_ADDR + GBA_BG2PA
-#define GBA_REG_BG2PB_ADDR      GBA_IO_REGS_ADDR + GBA_BG2PB
-#define GBA_REG_BG2PC_ADDR      GBA_IO_REGS_ADDR + GBA_BG2PC
-#define GBA_REG_BG2PD_ADDR      GBA_IO_REGS_ADDR + GBA_BG2PD
-#define GBA_REG_BG2X_ADDR       GBA_IO_REGS_ADDR + GBA_BG2X
-#define GBA_REG_BG2X_L_ADDR     GBA_IO_REGS_ADDR + GBA_BG2X_L
-#define GBA_REG_BG2X_H_ADDR     GBA_IO_REGS_ADDR + GBA_BG2X_H
-#define GBA_REG_BG2Y_ADDR       GBA_IO_REGS_ADDR + GBA_BG2Y
-#define GBA_REG_BG2Y_L_ADDR     GBA_IO_REGS_ADDR + GBA_BG2Y_L
-#define GBA_REG_BG2Y_H_ADDR     GBA_IO_REGS_ADDR + GBA_BG2Y_H
-#define GBA_REG_BG3PA_ADDR      GBA_IO_REGS_ADDR + GBA_BG3PA
-#define GBA_REG_BG3PB_ADDR      GBA_IO_REGS_ADDR + GBA_BG3PB
-#define GBA_REG_BG3PC_ADDR      GBA_IO_REGS_ADDR + GBA_BG3PC
-#define GBA_REG_BG3PD_ADDR      GBA_IO_REGS_ADDR + GBA_BG3PD
-#define GBA_REG_BG3X_ADDR       GBA_IO_REGS_ADDR + GBA_BG3X
-#define GBA_REG_BG3X_L_ADDR     GBA_IO_REGS_ADDR + GBA_BG3X_L
-#define GBA_REG_BG3X_H_ADDR     GBA_IO_REGS_ADDR + GBA_BG3X_H
-#define GBA_REG_BG3Y_ADDR       GBA_IO_REGS_ADDR + GBA_BG3Y
-#define GBA_REG_BG3Y_L_ADDR     GBA_IO_REGS_ADDR + GBA_BG3Y_L
-#define GBA_REG_BG3Y_H_ADDR     GBA_IO_REGS_ADDR + GBA_BG3Y_H
-#define GBA_REG_WIN0H_ADDR      GBA_IO_REGS_ADDR + GBA_WIN0H
-#define GBA_REG_WIN1H_ADDR      GBA_IO_REGS_ADDR + GBA_WIN1H
-#define GBA_REG_WIN0V_ADDR      GBA_IO_REGS_ADDR + GBA_WIN0V
-#define GBA_REG_WIN1V_ADDR      GBA_IO_REGS_ADDR + GBA_WIN1V
-#define GBA_REG_WININ_ADDR      GBA_IO_REGS_ADDR + GBA_WININ
-#define GBA_REG_WINOUT_ADDR     GBA_IO_REGS_ADDR + GBA_WINOUT
-#define GBA_REG_MOSAIC_ADDR     GBA_IO_REGS_ADDR + GBA_MOSAIC
-#define GBA_REG_BLDCNT_ADDR     GBA_IO_REGS_ADDR + GBA_BLDCNT
-#define GBA_REG_BLDMOD_ADDR     GBA_IO_REGS_ADDR + GBA_BLDMOD
-#define GBA_REG_BLDALPHA_ADDR   GBA_IO_REGS_ADDR + GBA_BLDALPHA
-#define GBA_REG_COLEV_ADDR      GBA_IO_REGS_ADDR + GBA_COLEV
-#define GBA_REG_BLDY_ADDR       GBA_IO_REGS_ADDR + GBA_BLDY
-#define GBA_REG_COLY_ADDR       GBA_IO_REGS_ADDR + GBA_COLY
-/* LCD I/O Registers */
-#ifndef __asm__
-#define GBA_REG_DISPCNT         (*(volatile unsigned short *)(GBA_REG_DISPCNT_ADDR))
-#define GBA_REG_DISPSTAT        (*(volatile unsigned short *)(GBA_REG_DISPSTAT_ADDR))
-#define GBA_REG_VCOUNT          (*(volatile unsigned short *)(GBA_REG_VCOUNT_ADDR))
-#define GBA_REG_BG0CNT          (*(volatile unsigned short *)(GBA_REG_BG0CNT_ADDR))
-#define GBA_REG_BG1CNT          (*(volatile unsigned short *)(GBA_REG_BG1CNT_ADDR))
-#define GBA_REG_BG2CNT          (*(volatile unsigned short *)(GBA_REG_BG2CNT_ADDR))
-#define GBA_REG_BG3CNT          (*(volatile unsigned short *)(GBA_REG_BG3CNT_ADDR))
-#define GBA_REG_BG0HOFS         (*(volatile unsigned short *)(GBA_REG_BG0HOFS_ADDR))
-#define GBA_REG_BG0VOFS         (*(volatile unsigned short *)(GBA_REG_BG0VOFS_ADDR))
-#define GBA_REG_BG1HOFS         (*(volatile unsigned short *)(GBA_REG_BG1HOFS_ADDR))
-#define GBA_REG_BG1VOFS         (*(volatile unsigned short *)(GBA_REG_BG1VOFS_ADDR))
-#define GBA_REG_BG2HOFS         (*(volatile unsigned short *)(GBA_REG_BG2HOFS_ADDR))
-#define GBA_REG_BG2VOFS         (*(volatile unsigned short *)(GBA_REG_BG2VOFS_ADDR))
-#define GBA_REG_BG3HOFS         (*(volatile unsigned short *)(GBA_REG_BG3HOFS_ADDR))
-#define GBA_REG_BG3VOFS         (*(volatile unsigned short *)(GBA_REG_BG3VOFS_ADDR))
-#define GBA_REG_BG2PA           (*(volatile unsigned short *)(GBA_REG_BG2PA_ADDR))
-#define GBA_REG_BG2PB           (*(volatile unsigned short *)(GBA_REG_BG2PB_ADDR))
-#define GBA_REG_BG2PC           (*(volatile unsigned short *)(GBA_REG_BG2PC_ADDR))
-#define GBA_REG_BG2PD           (*(volatile unsigned short *)(GBA_REG_BG2PD_ADDR))
-#define GBA_REG_BG2X            (*(volatile unsigned int   *)(GBA_REG_BG2X_ADDR))
-#define GBA_REG_BG2X_L          (*(volatile unsigned short *)(GBA_REG_BG2X_L_ADDR))
-#define GBA_REG_BG2X_H          (*(volatile unsigned short *)(GBA_REG_BG2X_H_ADDR))
-#define GBA_REG_BG2Y            (*(volatile unsigned int   *)(GBA_REG_BG2Y_ADDR))
-#define GBA_REG_BG2Y_L          (*(volatile unsigned short *)(GBA_REG_BG2Y_L_ADDR))
-#define GBA_REG_BG2Y_H          (*(volatile unsigned short *)(GBA_REG_BG2Y_H_ADDR))
-#define GBA_REG_BG3PA           (*(volatile unsigned short *)(GBA_REG_BG3PA_ADDR))
-#define GBA_REG_BG3PB           (*(volatile unsigned short *)(GBA_REG_BG3PB_ADDR))
-#define GBA_REG_BG3PC           (*(volatile unsigned short *)(GBA_REG_BG3PC_ADDR))
-#define GBA_REG_BG3PD           (*(volatile unsigned short *)(GBA_REG_BG3PD_ADDR))
-#define GBA_REG_BG3X            (*(volatile unsigned int   *)(GBA_REG_BG3X_ADDR))
-#define GBA_REG_BG3X_L          (*(volatile unsigned short *)(GBA_REG_BG3X_L_ADDR))
-#define GBA_REG_BG3X_H          (*(volatile unsigned short *)(GBA_REG_BG3X_H_ADDR))
-#define GBA_REG_BG3Y            (*(volatile unsigned int   *)(GBA_REG_BG3Y_ADDR))
-#define GBA_REG_BG3Y_L          (*(volatile unsigned short *)(GBA_REG_BG3Y_L_ADDR))
-#define GBA_REG_BG3Y_H          (*(volatile unsigned short *)(GBA_REG_BG3Y_H_ADDR))
-#define GBA_REG_WIN0H           (*(volatile unsigned short *)(GBA_REG_WIN0H_ADDR))
-#define GBA_REG_WIN1H           (*(volatile unsigned short *)(GBA_REG_WIN1H_ADDR))
-#define GBA_REG_WIN0V           (*(volatile unsigned short *)(GBA_REG_WIN0V_ADDR))
-#define GBA_REG_WIN1V           (*(volatile unsigned short *)(GBA_REG_WIN1V_ADDR))
-#define GBA_REG_WININ           (*(volatile unsigned short *)(GBA_REG_WININ_ADDR))
-#define GBA_REG_WINOUT          (*(volatile unsigned short *)(GBA_REG_WINOUT_ADDR))
-#define GBA_REG_MOSAIC          (*(volatile unsigned short *)(GBA_REG_MOSAIC_ADDR))
-#define GBA_REG_BLDCNT          (*(volatile unsigned short *)(GBA_REG_BLDCNT_ADDR))
-#define GBA_REG_BLDMOD          (*(volatile unsigned short *)(GBA_REG_BLDMOD_ADDR))
-#define GBA_REG_BLDALPHA        (*(volatile unsigned short *)(GBA_REG_BLDALPHA_ADDR))
-#define GBA_REG_COLEV           (*(volatile unsigned short *)(GBA_REG_COLEV_ADDR))
-#define GBA_REG_BLDY            (*(volatile unsigned short *)(GBA_REG_BLDY_ADDR))
-#define GBA_REG_COLY            (*(volatile unsigned short *)(GBA_REG_COLY_ADDR))
-#endif
-/*---------------------------------------------------------------------------+
-|    SOUND
-+----------------------------------------------------------------------------*/
-#define GBA_SOUND_INIT            0x8000  /**< makes the sound restart       */
-#define GBA_SOUND_DUTY87          0x0000  /**< 87.5% wave duty               */
-#define GBA_SOUND_DUTY75          0x0040  /**< 75% wave duty                 */
-#define GBA_SOUND_DUTY50          0x0080  /**< 50% wave duty                 */
-#define GBA_SOUND_DUTY25          0x00C0  /**< 25% wave duty                 */
-
-#define GBA_SOUND1_PLAYONCE       0x4000  /**< play sound once               */
-#define GBA_SOUND1_PLAYLOOP       0x0000  /**< play sound looped             */
-#define GBA_SOUND1_INIT           0x8000  /**< makes the sound restart       */
-#define GBA_SOUND1_SWEEPSHIFTS(n)(n)      /**< number of sweep shifts (0-7)  */
-#define GBA_SOUND1_SWEEPINC       0x0000  /**< sweep add (freq increase)     */
-#define GBA_SOUND1_SWEEPDEC       0x0008  /**< sweep dec (freq decrese)      */
-#define GBA_SOUND1_SWEEPTIME(n)  (n<<4)   /**< time of sweep (0-7)           */
-#define GBA_SOUND1_ENVSTEPS(n)   (n<<8)   /**< envelope steps (0-7)          */
-#define GBA_SOUND1_ENVINC         0x0800  /**< envelope increase             */
-#define GBA_SOUND1_ENVDEC         0x0000  /**< envelope decrease             */
-#define GBA_SOUND1_ENVINIT(n)    (n<<12)  /**< initial envelope volume (0-15)*/
-
-#define GBA_SOUND2_PLAYONCE       0x4000  /**< play sound once               */
-#define GBA_SOUND2_PLAYLOOP       0x0000  /**< play sound looped             */
-#define GBA_SOUND2_INIT           0x8000  /**< makes the sound restart       */
-#define GBA_SOUND2_ENVSTEPS(n)   (n<<8)   /**< envelope steps (0-7)          */
-#define GBA_SOUND2_ENVINC         0x0800  /**< envelope increase             */
-#define GBA_SOUND2_ENVDEC         0x0000  /**< envelope decrease             */
-#define GBA_SOUND2_ENVINIT(n)    (n<<12)  /**< initial envelope volume (0-15)*/
-
-#define GBA_SOUND3_BANK32         0x0000  /**< Use two banks of 32 steps each*/
-#define GBA_SOUND3_BANK64         0x0020  /**< Use one bank of 64 steps      */
-#define GBA_SOUND3_SETBANK0       0x0000  /**< Bank to play 0 or 1 (non set bank is written to) */
-#define GBA_SOUND3_SETBANK1       0x0040
-#define GBA_SOUND3_PLAY           0x0080  /**< Output sound                  */
-
-#define GBA_SOUND3_OUTPUT0        0x0000  /**< Mute output                   */
-#define GBA_SOUND3_OUTPUT1        0x2000  /**< Output unmodified             */
-#define GBA_SOUND3_OUTPUT12       0x4000  /**< Output 1/2                    */
-#define GBA_SOUND3_OUTPUT14       0x6000  /**< Output 1/4                    */
-#define GBA_SOUND3_OUTPUT34       0x8000  /**< Output 3/4                    */
-
-#define GBA_SOUND3_PLAYONCE       0x4000  /**< Play sound once               */
-#define GBA_SOUND3_PLAYLOOP       0x0000  /**< Play sound looped             */
-#define GBA_SOUND3_INIT           0x8000  /**< Makes the sound restart       */
-
-#define GBA_SOUND4_PLAYONCE       0x4000  /**< play sound once               */
-#define GBA_SOUND4_PLAYLOOP       0x0000  /**< play sound looped             */
-#define GBA_SOUND4_INIT           0x8000  /**< makes the sound restart       */
-#define GBA_SOUND4_ENVSTEPS(n)   (n<<8)   /**< envelope steps (0-7)          */
-#define GBA_SOUND4_ENVINC         0x0800  /**< envelope increase             */
-#define GBA_SOUND4_ENVDEC         0x0000  /**< envelope decrease             */
-#define GBA_SOUND4_ENVINIT(n)    (n<<12)  /**< initial envelope volume (0-15)*/
-
-#define GBA_SOUND4_STEPS7         0x0004
-#define GBA_SOUND4_STEPS15        0x0000
-#define GBA_SOUND4_PLAYONCE       0x4000
-#define GBA_SOUND4_PLAYLOOP       0x0000
-#define GBA_SOUND4_INIT           0x8000
-
-/* Sound Register address offsets */
-#define GBA_SOUND1CNT_L         0x00000060    /**< Channel 1 sweep           */
-#define GBA_SG10                0x00000060    /**< Channel 1 sweep low      X*/
-#define GBA_SG10_L              0x00000060    /**< Channel 1 sweep high     X*/
-#define GBA_SOUND1CNT_H         0x00000062    /**< Channel 1 Duty/Len/Env    */
-#define GBA_SG10_H              0x00000062    /**< Channel 1 Duty/Len/Env   X*/
-#define GBA_SOUND1CNT_X         0x00000064    /**< Channel 1 Freq/Control    */
-#define GBA_SG11                0x00000064    /**< Channel 1 Freq/Control   X*/
-#define GBA_SOUND2CNT_L         0x00000068    /**< Channel 2 Duty/Len/Env    */
-#define GBA_SG20                0x00000068    /**< Channel 2 Duty/Len/Env   X*/
-#define GBA_SOUND2CNT_H         0x0000006C    /**< Channel 2 Freq/Control    */
-#define GBA_SG21                0x0000006C    /**< Channel 2 Freq/Control   X*/
-#define GBA_SOUND3CNT_L         0x00000070    /**< Channel 3 Stop/Wave RAM   */
-#define GBA_SG30                0x00000070    /**< Channel 3 Stop/Wave RAM  X*/
-#define GBA_SG30_L              0x00000070    /**< Channel 3 Stop/Wave RAM  X*/
-#define GBA_SOUND3CNT_H         0x00000072    /**< Channel 3 Len/Vol         */
-#define GBA_SG30_H              0x00000072    /**< Channel 3 Len/Vol        X*/
-#define GBA_SOUND3CNT_X         0x00000074    /**< Channel 3 Freq/Control    */
-#define GBA_SG31                0x00000074    /**< Channel 3 Freq/Control   X*/
-#define GBA_SOUND4CNT_L         0x00000078    /**< Channel 4 Len/Env         */
-#define GBA_SG40                0x00000078    /**< Channel 4 Len/Env        X*/
-#define GBA_SOUND4CNT_H         0x0000007C    /**< Channel 4 Freq/Control    */
-#define GBA_SG41                0x0000007C    /**< Channel 4 Freq/Control   X*/
-#define GBA_SOUNDCNT_L          0x00000080    /**< Control LR/Vol/Enable     */
-#define GBA_SGCNT0_L            0x00000080    /**< Control LR/Vol/Enable    X*/
-#define GBA_SOUNDCNT_H          0x00000082    /**< Control Mixing/DMA        */
-#define GBA_SGCNT0_H            0x00000082    /**< Control Mixing/DMA       X*/
-#define GBA_SOUNDCNT_X          0x00000084    /**< Control Sound on/off      */
-#define GBA_SGCNT1              0x00000084    /**< Control Sound on/off     X*/
-#define GBA_SOUNDBIAS           0x00000088    /**< Sound PWM control         */
-#define GBA_SGBIAS              0x00000088    /**< Sound PWM control        X*/
-#define GBA_SGWR0               0x00000090    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_WAVE_RAM0_L         0x00000090    /**< Ch3 Wave Pattern RAM      */
-#define GBA_SGWR0_L             0x00000090    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_WAVE_RAM0_H         0x00000092    /**< Ch3 Wave Pattern RAM      */
-#define GBA_SGWR0_H             0x00000092    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_SGWR1               0x00000094    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_WAVE_RAM1_L         0x00000094    /**< Ch3 Wave Pattern RAM      */
-#define GBA_SGWR1_L             0x00000094    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_WAVE_RAM1_H         0x00000096    /**< Ch3 Wave Pattern RAM      */
-#define GBA_SGWR1_H             0x00000096    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_SGWR2               0x00000098    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_WAVE_RAM2_L         0x00000098    /**< Ch3 Wave Pattern RAM      */
-#define GBA_SGWR2_L             0x00000098    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_WAVE_RAM2_H         0x0000009A    /**< Ch3 Wave Pattern RAM      */
-#define GBA_SGWR2_H             0x0000009A    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_SGWR3               0x0000009C    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_WAVE_RAM3_L         0x0000009C    /**< Ch3 Wave Pattern RAM      */
-#define GBA_SGWR3_L             0x0000009C    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_WAVE_RAM3_H         0x0000009E    /**< Ch3 Wave Pattern RAM      */
-#define GBA_SGWR3_H             0x0000009E    /**< Ch3 Wave Pattern RAM     X*/
-#define GBA_SGFIF0A             0x000000A0    /**< Sound A FIFO              X*/
-#define GBA_FIFO_A_L            0x000000A0    /**< Sound A FIFO               */
-#define GBA_SGFIFOA_L           0x000000A0    /**< Sound A FIFO              X*/
-#define GBA_FIFO_A_H            0x000000A2    /**< Sound A FIFO               */
-#define GBA_SGFIFOA_H           0x000000A2    /**< Sound A FIFO              X*/
-#define GBA_SGFIFOB             0x000000A4    /**< Sound B FIFO              X*/
-#define GBA_FIFO_B_L            0x000000A4    /**< Sound B FIFO               */
-#define GBA_SGFIFOB_L           0x000000A4    /**< Sound B FIFO              X*/
-#define GBA_FIFO_B_H            0x000000A6    /**< Sound B FIFO               */
-#define GBA_SGFIFOB_H           0x000000A6    /**< Sound B FIFO              X*/
-/* Sound Registers addresses */
-#define GBA_REG_SOUND1CNT_L_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND1CNT_L
-#define GBA_REG_SG10_ADDR         GBA_IO_REGS_ADDR + GBA_SG10
-#define GBA_REG_SG10_L_ADDR       GBA_IO_REGS_ADDR + GBA_SG10_L
-#define GBA_REG_SOUND1CNT_H_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND1CNT_H
-#define GBA_REG_SG10_H_ADDR       GBA_IO_REGS_ADDR + GBA_SG10_H
-#define GBA_REG_SOUND1CNT_X_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND1CNT_X
-#define GBA_REG_SG11_ADDR         GBA_IO_REGS_ADDR + GBA_SG11
-#define GBA_REG_SOUND2CNT_L_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND2CNT_L
-#define GBA_REG_SG20_ADDR         GBA_IO_REGS_ADDR + GBA_SG20
-#define GBA_REG_SOUND2CNT_H_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND2CNT_H
-#define GBA_REG_SG21_ADDR         GBA_IO_REGS_ADDR + GBA_SG21
-#define GBA_REG_SOUND3CNT_L_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND3CNT_L
-#define GBA_REG_SG30_ADDR         GBA_IO_REGS_ADDR + GBA_SG30
-#define GBA_REG_SG30_L_ADDR       GBA_IO_REGS_ADDR + GBA_SG30_L
-#define GBA_REG_SOUND3CNT_H_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND3CNT_H
-#define GBA_REG_SG30_H_ADDR       GBA_IO_REGS_ADDR + GBA_SG30_H
-#define GBA_REG_SOUND3CNT_X_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND3CNT_X
-#define GBA_REG_SG31_ADDR         GBA_IO_REGS_ADDR + GBA_SG31
-#define GBA_REG_SOUND4CNT_L_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND4CNT_L
-#define GBA_REG_SG40_ADDR         GBA_IO_REGS_ADDR + GBA_SG40
-#define GBA_REG_SOUND4CNT_H_ADDR  GBA_IO_REGS_ADDR + GBA_SOUND4CNT_H
-#define GBA_REG_SG41_ADDR         GBA_IO_REGS_ADDR + GBA_SG41
-#define GBA_REG_SOUNDCNT_L_ADDR   GBA_IO_REGS_ADDR + GBA_SOUNDCNT_L
-#define GBA_REG_SGCNT0_L_ADDR     GBA_IO_REGS_ADDR + GBA_SGCNT0_L
-#define GBA_REG_SOUNDCNT_H_ADDR   GBA_IO_REGS_ADDR + GBA_SOUNDCNT_H
-#define GBA_REG_SGCNT0_H_ADDR     GBA_IO_REGS_ADDR + GBA_SGCNT0_H
-#define GBA_REG_SOUNDCNT_X_ADDR   GBA_IO_REGS_ADDR + GBA_SOUNDCNT_X
-#define GBA_REG_SGCNT1_ADDR       GBA_IO_REGS_ADDR + GBA_SGCNT1
-#define GBA_REG_SGBIAS_ADDR       GBA_IO_REGS_ADDR + GBA_SGBIAS
-#define GBA_REG_SOUNDBIAS_ADDR    GBA_IO_REGS_ADDR + GBA_SOUNDBIAS
-#define GBA_REG_SGWR0_ADDR        GBA_IO_REGS_ADDR + GBA_SGWR0
-#define GBA_REG_WAVE_RAM0_L_ADDR  GBA_IO_REGS_ADDR + GBA_WAVE_RAM0_L
-#define GBA_REG_SGWR0_L_ADDR      GBA_IO_REGS_ADDR + GBA_SGWR0_L
-#define GBA_REG_WAVE_RAM0_H_ADDR  GBA_IO_REGS_ADDR + GBA_WAVE_RAM0_H
-#define GBA_REG_SGWR0_H_ADDR      GBA_IO_REGS_ADDR + GBA_SGWR0_H
-#define GBA_REG_SGWR1_ADDR        GBA_IO_REGS_ADDR + GBA_SGWR1
-#define GBA_REG_WAVE_RAM1_L_ADDR  GBA_IO_REGS_ADDR + GBA_WAVE_RAM1_L
-#define GBA_REG_SGWR1_L_ADDR      GBA_IO_REGS_ADDR + GBA_SGWR1_L
-#define GBA_REG_WAVE_RAM1_H_ADDR  GBA_IO_REGS_ADDR + GBA_WAVE_RAM1_H
-#define GBA_REG_SGWR1_H_ADDR      GBA_IO_REGS_ADDR + GBA_SGWR1_H
-#define GBA_REG_SGWR2_ADDR        GBA_IO_REGS_ADDR + GBA_SGWR2
-#define GBA_REG_WAVE_RAM2_L_ADDR  GBA_IO_REGS_ADDR + GBA_WAVE_RAM2_L
-#define GBA_REG_SGWR2_L_ADDR      GBA_IO_REGS_ADDR + GBA_SGWR2_L
-#define GBA_REG_WAVE_RAM2_H_ADDR  GBA_IO_REGS_ADDR + GBA_WAVE_RAM2_H
-#define GBA_REG_SGWR2_H_ADDR      GBA_IO_REGS_ADDR + GBA_SGWR2_H
-#define GBA_REG_SGWR3_ADDR        GBA_IO_REGS_ADDR + GBA_SGWR3
-#define GBA_REG_WAVE_RAM3_L_ADDR  GBA_IO_REGS_ADDR + GBA_WAVE_RAM3_L
-#define GBA_REG_SGWR3_L_ADDR      GBA_IO_REGS_ADDR + GBA_SGWR3_L
-#define GBA_REG_WAVE_RAM3_H_ADDR  GBA_IO_REGS_ADDR + GBA_WAVE_RAM3_H
-#define GBA_REG_SGWR3_H_ADDR      GBA_IO_REGS_ADDR + GBA_SGWR3_H
-#define GBA_REG_SGFIF0A_ADDR      GBA_IO_REGS_ADDR + GBA_SGFIF0A
-#define GBA_REG_FIFO_A_L_ADDR     GBA_IO_REGS_ADDR + GBA_FIFO_A_L
-#define GBA_REG_SGFIFOA_L_ADDR    GBA_IO_REGS_ADDR + GBA_SGFIFOA_L
-#define GBA_REG_FIFO_A_H_ADDR     GBA_IO_REGS_ADDR + GBA_FIFO_A_H
-#define GBA_REG_SGFIFOA_H_ADDR    GBA_IO_REGS_ADDR + GBA_SGFIFOA_H
-#define GBA_REG_SGFIFOB_ADDR      GBA_IO_REGS_ADDR + GBA_SGFIFOB
-#define GBA_REG_FIFO_B_L_ADDR     GBA_IO_REGS_ADDR + GBA_FIFO_B_L
-#define GBA_REG_SGFIFOB_L_ADDR    GBA_IO_REGS_ADDR + GBA_SGFIFOB_L
-#define GBA_REG_FIFO_B_H_ADDR     GBA_IO_REGS_ADDR + GBA_FIFO_B_H
-#define GBA_REG_SGFIFOB_H_ADDR    GBA_IO_REGS_ADDR + GBA_SGFIFOB_H
-/* Sound Registers */
-#ifndef __asm__
-#define GBA_REG_SOUND1CNT_L     (*(volatile unsigned int   *)(GBA_REG_SOUND1CNT_L_ADDR))
-#define GBA_REG_SG10            (*(volatile unsigned int   *)(GBA_REG_SG10_ADDR))
-#define GBA_REG_SG10_L          (*(volatile unsigned short *)(GBA_REG_SG10_L_ADDR))
-#define GBA_REG_SOUND1CNT_H     (*(volatile unsigned short *)(GBA_REG_SOUND1CNT_H_ADDR))
-#define GBA_REG_SG10_H          (*(volatile unsigned short *)(GBA_REG_SG10_H_ADDR))
-#define GBA_REG_SOUND1CNT_X     (*(volatile unsigned short *)(GGBA_REG_SOUND1CNT_X_ADDR))
-#define GBA_REG_SG11            (*(volatile unsigned short *)(GBA_REG_SG11_ADDR))
-#define GBA_REG_SOUND2CNT_L     (*(volatile unsigned short *)(GBA_REG_SOUND2CNT_L_ADDR))
-#define GBA_REG_SG20            (*(volatile unsigned short *)(GBA_REG_SG20_ADDR))
-#define GBA_REG_SOUND2CNT_H     (*(volatile unsigned short *)(GBA_REG_SOUND2CNT_H_ADDR))
-#define GBA_REG_SG21            (*(volatile unsigned short *)(GBA_REG_SG21_ADDR))
-#define GBA_REG_SOUND3CNT_L     (*(volatile unsigned int   *)(GBA_REG_SOUND3CNT_L_ADDR))
-#define GBA_REG_SG30            (*(volatile unsigned int   *)(GBA_REG_SG30_ADDR))
-#define GBA_REG_SG30_L          (*(volatile unsigned short *)(GBA_REG_SG30_L_ADDR))
-#define GBA_REG_SOUND3CNT_H     (*(volatile unsigned short *)(GBA_REG_SOUND3CNT_H_ADDR))
-#define GBA_REG_SG30_H          (*(volatile unsigned short *)(GBA_REG_SG30_H_ADDR))
-#define GBA_REG_SOUND3CNT_X     (*(volatile unsigned short *)(GBA_REG_SOUND3CNT_X_ADDR))
-#define GBA_REG_SG31            (*(volatile unsigned short *)(GBA_REG_SG31_ADDR))
-#define GBA_REG_SOUND4CNT_L     (*(volatile unsigned short *)(GBA_REG_SOUND4CNT_L_ADDR))
-#define GBA_REG_SG40            (*(volatile unsigned short *)(GBA_REG_SG40_ADDR))
-#define GBA_REG_SOUND4CNT_H     (*(volatile unsigned short *)(GBA_REG_SOUND4CNT_H_ADDR))
-#define GBA_REG_SG41            (*(volatile unsigned short *)(GBA_REG_SG41_ADDR))
-#define GBA_REG_SGCNT0          (*(volatile unsigned int   *)(GBA_REG_SGCNT0_ADDR))
-#define GBA_REG_SOUNDCNT_L      (*(volatile unsigned short *)(GBA_REG_SOUNDCNT_L_ADDR))
-#define GBA_REG_SGCNT0_L        (*(volatile unsigned short *)(GBA_REG_SGCNT0_L_ADDR))
-#define GBA_REG_SOUNDCNT_H      (*(volatile unsigned short *)(GBA_REG_SOUNDCNT_H_ADDR))
-#define GBA_REG_SGCNT0_H        (*(volatile unsigned short *)(GBA_REG_SGCNT0_H_ADDR))
-#define GBA_REG_SOUNDCNT_X      (*(volatile unsigned short *)(GBA_REG_SOUNDCNT_X_ADDR))
-#define GBA_REG_SGCNT1          (*(volatile unsigned short *)(GBA_REG_SGCNT1_ADDR))
-#define GBA_REG_SOUNDBIAS       (*(volatile unsigned short *)(GBA_REG_SOUNDBIAS_ADDR))
-#define GBA_REG_SGBIAS          (*(volatile unsigned short *)(GBA_REG_SGBIAS_ADDR))
-#define GBA_REG_SGWR0           (*(volatile unsigned int   *)(GBA_REG_SGWR0_ADDR))
-#define GBA_REG_WAVE_RAM0_L     (*(volatile unsigned short *)(GBA_REG_WAVE_RAM0_L_ADDR))
-#define GBA_REG_SGWR0_L         (*(volatile unsigned short *)(GBA_REG_SGWR0_L_ADDR))
-#define GBA_REG_WAVE_RAM0_H     (*(volatile unsigned short *)(GBA_REG_WAVE_RAM0_H_ADDR))
-#define GBA_REG_SGWR0_H         (*(volatile unsigned short *)(GBA_REG_SGWR0_H_ADDR))
-#define GBA_REG_SGWR1           (*(volatile unsigned int   *)(GBA_REG_SGWR1_ADDR))
-#define GBA_REG_WAVE_RAM1_L     (*(volatile unsigned short *)(GBA_REG_WAVE_RAM1_L_ADDR))
-#define GBA_REG_SGWR1_L         (*(volatile unsigned short *)(GBA_REG_SGWR1_L_ADDR))
-#define GBA_REG_WAVE_RAM1_H     (*(volatile unsigned short *)(GBA_REG_WAVE_RAM1_H_ADDR))
-#define GBA_REG_SGWR1_H         (*(volatile unsigned short *)(GBA_REG_SGWR1_H_ADDR))
-#define GBA_REG_SGWR2           (*(volatile unsigned int   *)(GBA_REG_SGWR2_ADDR))
-#define GBA_REG_WAVE_RAM2_L     (*(volatile unsigned short *)(GBA_REG_WAVE_RAM2_L_ADDR))
-#define GBA_REG_SGWR2_L         (*(volatile unsigned short *)(GBA_REG_SGWR2_L_ADDR))
-#define GBA_REG_WAVE_RAM2_H     (*(volatile unsigned short *)(GGBA_REG_WAVE_RAM2_H_ADDR))
-#define GBA_REG_SGWR2_H         (*(volatile unsigned short *)(GGBA_REG_SGWR2_H_ADDR))
-#define GBA_REG_SGWR3           (*(volatile unsigned int   *)(GBA_REG_SGWR3_ADDR))
-#define GBA_REG_WAVE_RAM3_L     (*(volatile unsigned short *)(GBA_REG_WAVE_RAM3_L)
-#define GBA_REG_SGWR3_L         (*(volatile unsigned short *)(GBA_REG_SGWR3_L)
-#define GBA_REG_WAVE_RAM3_H     (*(volatile unsigned short *)(GBA_REG_WAVE_RAM3_H_ADDR))
-#define GBA_REG_SGWR3_H         (*(volatile unsigned short *)(GBA_REG_SGWR3_H_ADDR))
-#define GBA_REG_SGFIF0A         (*(volatile unsigned int   *)(GBA_REG_SGFIF0A_ADDR))
-#define GBA_REG_FIFO_A_L        (*(volatile unsigned short *)(GBA_REG_FIFO_A_L_ADDR))
-#define GBA_REG_SGFIFOA_L       (*(volatile unsigned short *)(GBA_REG_SGFIFOA_L_ADDR))
-#define GBA_REG_FIFO_A_H        (*(volatile unsigned short *)(GBA_REG_FIFO_A_H_ADDR))
-#define GBA_REG_SGFIFOA_H       (*(volatile unsigned short *)(GBA_REG_SGFIFOA_H_ADDR))
-#define GBA_REG_SGFIFOB         (*(volatile unsigned int   *)(GBA_REG_SGFIFOB_ADDR))
-#define GBA_REG_FIFO_B_L        (*(volatile unsigned short *)(GBA_REG_FIFO_B_L_ADDR))
-#define GBA_REG_SGFIFOB_L       (*(volatile unsigned short *)(GBA_REG_SGFIFOB_L_ADDR))
-#define GBA_REG_FIFO_B_H        (*(volatile unsigned short *)(GBA_REG_FIFO_B_H_ADDR))
-#define GBA_REG_SGFIFOB_H       (*(volatile unsigned short *)(GBA_REG_SGFIFOB_H_ADDR))
-#endif
-
-/*---------------------------------------------------------------------------+
-|    DMA
-+----------------------------------------------------------------------------*/
-#define GBA_DMA_ENABLE            0x80000000  /**<  DMA Enable               */
-#define GBA_DMA_IF_ENABLE         0x40000000  /**<  Interrupt Request Enable */
-#define GBA_DMA_TIMMING_IMM       0x00000000  /**<  Run Immediately          */
-#define GBA_DMA_TIMMING_V_BLANK   0x10000000  /**<  Run V Blank              */
-#define GBA_DMA_TIMMING_H_BLANK   0x20000000  /**<  Run H Blank              */
-#define GBA_DMA_TIMMING_DISP      0x30000000  /**<  Run Display              */
-#define GBA_DMA_TIMMING_SOUND     0x30000000  /**<  Run Sound FIFO Request   */
-#define GBA_DMA_DREQ_ON           0x08000000  /**<  Data Request Synchronize Mode ON */
-#define GBA_DMA_16BIT_BUS         0x00000000  /**<  Select Bus Size 16Bit    */
-#define GBA_DMA_32BIT_BUS         0x04000000  /**<  Select Bus Size 32Bit    */
-#define GBA_DMA_CONTINUOUS_ON     0x02000000  /**<  Continuous Mode ON       */
-#define GBA_DMA_SRC_INC           0x00000000  /**<  Select Source Increment  */
-#define GBA_DMA_SRC_DEC           0x00800000  /**<  Select Source Decrement  */
-#define GBA_DMA_SRC_FIX           0x01000000  /**<  Select Source Fixed      */
-#define GBA_DMA_DEST_INC          0x00000000  /**<  Select Destination Increment */
-#define GBA_DMA_DEST_DEC          0x00200000  /**<  Select Destination Decrement */
-#define GBA_DMA_DEST_FIX          0x00400000  /**<  Select Destination Fixed */
-#define GBA_DMA_DEST_RELOAD       0x00600000  /**<  Select Destination       */
-
-
-/* DMA Transfer Channel address offsets */
-#define GBA_DMA0SAD             0x000000B0   /**< DMA0 Source Address             */
-#define GBA_DMA0SAD_L           0x000000B0   /**< DMA0 Source Address Low Value   */
-#define GBA_DMA0SAD_H           0x000000B2   /**< DMA0 Source Address High Value  */
-#define GBA_DMA0DAD             0x000000B4   /**< DMA0 Destination Address        */
-#define GBA_DMA0DAD_L           0x000000B4   /**< DMA0 Destination Address Low Value  */
-#define GBA_DMA0DAD_H           0x000000B6   /**< DMA0 Destination Address High Value */
-#define GBA_DMA0CNT             0x000000B8   /**< DMA0 Control Word Count          */
-#define GBA_DMA0CNT_L           0x000000B8   /**< DMA0 Control Low Value           */
-#define GBA_DMA0CNT_H           0x000000BA   /**< DMA0 Control High Value          */
-#define GBA_DMA1SAD             0x000000BC   /**< DMA1 Source Address              */
-#define GBA_DMA1SAD_L           0x000000BC   /**< DMA1 Source Address Low Value    */
-#define GBA_DMA1SAD_H           0x000000BE   /**< DMA1 Source Address High Value   */
-#define GBA_DMA1DAD             0x000000C0   /**< DMA1 Destination Address         */
-#define GBA_DMA1DAD_L           0x000000C0   /**< DMA1 Destination Address Low Value  */
-#define GBA_DMA1DAD_H           0x000000C2   /**< DMA1 Destination Address High Value */
-#define GBA_DMA1CNT             0x000000C4   /**< DMA1 Control Word Count          */
-#define GBA_DMA1CNT_L           0x000000C4   /**< DMA1 Control Low Value           */
-#define GBA_DMA1CNT_H           0x000000C6   /**< DMA1 Control High Value          */
-#define GBA_DMA2SAD             0x000000C8   /**< DMA2 Source Address              */
-#define GBA_DMA2SAD_L           0x000000C8   /**< DMA2 Source Address Low Value    */
-#define GBA_DMA2SAD_H           0x000000CA   /**< DMA2 Source Address High Value   */
-#define GBA_DMA2DAD             0x000000CC   /**< DMA2 Destination Address         */
-#define GBA_DMA2DAD_L           0x000000CC   /**< DMA2 Destination Address Low Value  */
-#define GBA_DMA2DAD_H           0x000000CE   /**< DMA2 Destination Address High Value */
-#define GBA_DMA2CNT             0x000000D0   /**< DMA2 Control Word Count          */
-#define GBA_DMA2CNT_L           0x000000D0   /**< DMA2 Control Low Value           */
-#define GBA_DMA2CNT_H           0x000000D2   /**< DMA2 Control High Value          */
-#define GBA_DMA3SAD             0x000000D4   /**< DMA3 Source Address              */
-#define GBA_DMA3SAD_L           0x000000D4   /**< DMA3 Source Address Low Value    */
-#define GBA_DMA3SAD_H           0x000000D6   /**< DMA3 Source Address High Value   */
-#define GBA_DMA3DAD             0x000000D8   /**< DMA3 Destination Address         */
-#define GBA_DMA3DAD_L           0x000000D8   /**< DMA3 Destination Address Low Value  */
-#define GBA_DMA3DAD_H           0x000000DA   /**< DMA3 Destination Address High Value */
-#define GBA_DMA3CNT             0x000000DC   /**< DMA3 Control Word Count          */
-#define GBA_DMA3CNT_L           0x000000DC   /**< DMA3 Control Low Value           */
-#define GBA_DMA3CNT_H           0x000000DE   /**< DMA3 Control High Value          */
-/* DMA Transfer Channel address  */
-#define GBA_REG_DMA0SAD_ADDR    GBA_IO_REGS_ADDR + GBA_DMA0SAD
-#define GBA_REG_DMA0SAD_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA0SAD_L
-#define GBA_REG_DMA0SAD_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA0SAD_H
-#define GBA_REG_DMA0DAD_ADDR    GBA_IO_REGS_ADDR + GBA_DMA0DAD
-#define GBA_REG_DMA0DAD_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA0DAD_L
-#define GBA_REG_DMA0DAD_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA0DAD_H
-#define GBA_REG_DMA0CNT_ADDR    GBA_IO_REGS_ADDR + GBA_DMA0CNT
-#define GBA_REG_DMA0CNT_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA0CNT_L
-#define GBA_REG_DMA0CNT_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA0CNT_H
-#define GBA_REG_DMA1SAD_ADDR    GBA_IO_REGS_ADDR + GBA_DMA1SAD
-#define GBA_REG_DMA1SAD_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA1SAD_L
-#define GBA_REG_DMA1SAD_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA1SAD_H
-#define GBA_REG_DMA1DAD_ADDR    GBA_IO_REGS_ADDR + GBA_DMA1DAD)
-#define GBA_REG_DMA1DAD_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA1DAD_L
-#define GBA_REG_DMA1DAD_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA1DAD_H
-#define GBA_REG_DMA1CNT_ADDR    GBA_IO_REGS_ADDR + GBA_DMA1CNT
-#define GBA_REG_DMA1CNT_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA1CNT_L
-#define GBA_REG_DMA1CNT_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA1CNT_H
-#define GBA_REG_DMA2SAD_ADDR    GBA_IO_REGS_ADDR + GBA_DMA2SAD
-#define GBA_REG_DMA2SAD_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA2SAD_L
-#define GBA_REG_DMA2SAD_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA2SAD_H
-#define GBA_REG_DMA2DAD_ADDR    GBA_IO_REGS_ADDR + GBA_DMA2DAD
-#define GBA_REG_DMA2DAD_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA2DAD_L
-#define GBA_REG_DMA2DAD_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA2DAD_H
-#define GBA_REG_DMA2CNT_ADDR    GBA_IO_REGS_ADDR + GBA_DMA2CNT
-#define GBA_REG_DMA2CNT_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA2CNT_L
-#define GBA_REG_DMA2CNT_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA2CNT_H
-#define GBA_REG_DMA3SAD_ADDR    GBA_IO_REGS_ADDR + GBA_DMA3SAD
-#define GBA_REG_DMA3SAD_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA3SAD_L
-#define GBA_REG_DMA3SAD_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA3SAD_H
-#define GBA_REG_DMA3DAD_ADDR    GBA_IO_REGS_ADDR + GBA_DMA3DAD
-#define GBA_REG_DMA3DAD_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA3DAD_L
-#define GBA_REG_DMA3DAD_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA3DAD_H
-#define GBA_REG_DMA3CNT_ADDR    GBA_IO_REGS_ADDR + GBA_DMA3CNT
-#define GBA_REG_DMA3CNT_L_ADDR  GBA_IO_REGS_ADDR + GBA_DMA3CNT_L
-#define GBA_REG_DMA3CNT_H_ADDR  GBA_IO_REGS_ADDR + GBA_DMA3CNT_H
-/* DMA Transfer Channel registers*/
-#ifndef __asm__
-#define GBA_REG_DMA0SAD         (*(volatile unsigned int   *)(GBA_REG_DMA0SAD_ADDR))
-#define GBA_REG_DMA0SAD_L       (*(volatile unsigned short *)(GBA_REG_DMA0SAD_L_ADDR))
-#define GBA_REG_DMA0SAD_H       (*(volatile unsigned short *)(GBA_REG_DMA0SAD_H_ADDR))
-#define GBA_REG_DMA0DAD         (*(volatile unsigned int   *)(GBA_REG_DMA0DAD_ADDR))
-#define GBA_REG_DMA0DAD_L       (*(volatile unsigned short *)(GBA_REG_DMA0DAD_L_ADDR))
-#define GBA_REG_DMA0DAD_H       (*(volatile unsigned short *)(GBA_REG_DMA0DAD_H_ADDR))
-#define GBA_REG_DMA0CNT         (*(volatile unsigned int   *)(GBA_REG_DMA0CNT_ADDR))
-#define GBA_REG_DMA0CNT_L       (*(volatile unsigned short *)(GBA_REG_DMA0CNT_L_ADDR))
-#define GBA_REG_DMA0CNT_H       (*(volatile unsigned short *)(GBA_REG_DMA0CNT_H_ADDR))
-#define GBA_REG_DMA1SAD         (*(volatile unsigned int   *)(GBA_REG_DMA1SAD_ADDR))
-#define GBA_REG_DMA1SAD_L       (*(volatile unsigned short *)(GBA_REG_DMA1SAD_L_ADDR))
-#define GBA_REG_DMA1SAD_H       (*(volatile unsigned short *)(GBA_REG_DMA1SAD_H_ADDR))
-#define GBA_REG_DMA1DAD         (*(volatile unsigned int   *)(GBA_REG_DMA1DAD_ADDR))
-#define GBA_REG_DMA1DAD_L       (*(volatile unsigned short *)(GBA_REG_DMA1DAD_L_ADDR))
-#define GBA_REG_DMA1DAD_H       (*(volatile unsigned short *)(GBA_REG_DMA1DAD_H_ADDR))
-#define GBA_REG_DMA1CNT         (*(volatile unsigned int   *)(GBA_REG_DMA1CNT_ADDR))
-#define GBA_REG_DMA1CNT_L       (*(volatile unsigned short *)(GBA_REG_DMA1CNT_L_ADDR))
-#define GBA_REG_DMA1CNT_H       (*(volatile unsigned short *)(GBA_REG_DMA1CNT_H_ADDR))
-#define GBA_REG_DMA2SAD         (*(volatile unsigned int   *)(GBA_REG_DMA2SAD_ADDR))
-#define GBA_REG_DMA2SAD_L       (*(volatile unsigned short *)(GBA_REG_DMA2SAD_L_ADDR))
-#define GBA_REG_DMA2SAD_H       (*(volatile unsigned short *)(GBA_REG_DMA2SAD_H_ADDR))
-#define GBA_REG_DMA2DAD         (*(volatile unsigned int   *)(GBA_REG_DMA2DAD_ADDR))
-#define GBA_REG_DMA2DAD_L       (*(volatile unsigned short *)(GBA_REG_DMA2DAD_L_ADDR))
-#define GBA_REG_DMA2DAD_H       (*(volatile unsigned short *)(GBA_REG_DMA2DAD_H_ADDR))
-#define GBA_REG_DMA2CNT         (*(volatile unsigned int   *)(GBA_REG_DMA2CNT_ADDR))
-#define GBA_REG_DMA2CNT_L       (*(volatile unsigned short *)(GBA_REG_DMA2CNT_L_ADDR))
-#define GBA_REG_DMA2CNT_H       (*(volatile unsigned short *)(GBA_REG_DMA2CNT_H_ADDR))
-#define GBA_REG_DMA3SAD         (*(volatile unsigned int   *)(GBA_REG_DMA3SAD_ADDR))
-#define GBA_REG_DMA3SAD_L       (*(volatile unsigned short *)(GBA_REG_DMA3SAD_L_ADDR))
-#define GBA_REG_DMA3SAD_H       (*(volatile unsigned short *)(GBA_REG_DMA3SAD_H_ADDR))
-#define GBA_REG_DMA3DAD         (*(volatile unsigned int   *)(GBA_REG_DMA3DAD_ADDR))
-#define GBA_REG_DMA3DAD_L       (*(volatile unsigned short *)(GBA_REG_DMA3DAD_L_ADDR))
-#define GBA_REG_DMA3DAD_H       (*(volatile unsigned short *)(GBA_REG_DMA3DAD_H_ADDR))
-#define GBA_REG_DMA3CNT         (*(volatile unsigned int *)(GBA_REG_DMA3CNT_ADDR))
-#define GBA_REG_DMA3CNT_L       (*(volatile unsigned short *)(GBA_REG_DMA3CNT_L_ADDR))
-#define GBA_REG_DMA3CNT_H       (*(volatile unsigned short *)(GBA_REG_DMA3CNT_H_ADDR))
-#endif
-
-/*---------------------------------------------------------------------------+
-|    TIMER
-+----------------------------------------------------------------------------*/
-#define GBA_TMR_PRESCALER_1CK     0x0000    /**< Prescaler 1 clock           */
-#define GBA_TMR_PRESCALER_64CK    0x0001    /**<          64 clocks          */
-#define GBA_TMR_PRESCALER_256CK   0x0002    /**<         256 clocks          */
-#define GBA_TMR_PRESCALER_1024CK  0x0003    /**<        1024 clocks          */
-#define GBA_TMR_IF_ENABLE         0x0040    /**< Interrupt Request Enable    */
-#define GBA_TMR_ENABLE            0x0080    /**< Run Timer                   */
-
-/* Timer Register address offsets */
-#define GBA_TM0D                0x00000100  /**< Timer 0 counter value      X*/
-#define GBA_TM0CNT_L            0x00000100  /**< Timer 0 counter value       */
-#define GBA_TM0CNT              0x00000102  /**< Timer 0 Control            X*/
-#define GBA_TM0CNT_H            0x00000102  /**< Timer 0 Control             */
-#define GBA_TM1D                0x00000104  /**< Timer 1 counter value      X*/
-#define GBA_TM1CNT_L            0x00000104  /**< Timer 1 counter value       */
-#define GBA_TM1CNT              0x00000106  /**< Timer 1 control            X*/
-#define GBA_TM1CNT_H            0x00000106  /**< Timer 1 control             */
-#define GBA_TM2D                0x00000108  /**< Timer 2 counter value      X*/
-#define GBA_TM2CNT_L            0x00000108  /**< Timer 2 counter value       */
-#define GBA_TM2CNT              0x0000010A  /**< Timer 2 control            X*/
-#define GBA_TM2CNT_H            0x0000010A  /**< Timer 2 control             */
-#define GBA_TM3D                0x0000010C  /**< Timer 3 counter value      X*/
-#define GBA_TM3CNT_L            0x0000010C  /**< Timer 3 counter value       */
-#define GBA_TM3CNT              0x0000010E  /**< Timer 4 control            X*/
-#define GBA_TM3CNT_H            0x0000010E  /**< Timer 4 control             */
-/* Timer Register addresses */
-#define GBA_REG_TM0D_ADDR       GBA_IO_REGS_ADDR + GBA_TM0D
-#define GBA_REG_TM0CNT_L_ADDR   GBA_IO_REGS_ADDR + GBA_TM0CNT_L
-#define GBA_REG_TM0CNT_ADDR     GBA_IO_REGS_ADDR + GBA_TM0CNT
-#define GBA_REG_TM0CNT_H_ADDR   GBA_IO_REGS_ADDR + GBA_TM0CNT_H
-#define GBA_REG_TM1D_ADDR       GBA_IO_REGS_ADDR + GBA_TM1D
-#define GBA_REG_TM1CNT_L_ADDR   GBA_IO_REGS_ADDR + GBA_TM1CNT_L
-#define GBA_REG_TM1CNT_ADDR     GBA_IO_REGS_ADDR + GBA_TM1CNT
-#define GBA_REG_TM1CNT_H_ADDR   GBA_IO_REGS_ADDR + GBA_TM1CNT_H
-#define GBA_REG_TM2D_ADDR       GBA_IO_REGS_ADDR + GBA_TM2D
-#define GBA_REG_TM2CNT_L_ADDR   GBA_IO_REGS_ADDR + GBA_TM2CNT_L
-#define GBA_REG_TM2CNT_ADDR     GBA_IO_REGS_ADDR + GBA_TM2CNT
-#define GBA_REG_TM2CNT_H_ADDR   GBA_IO_REGS_ADDR + GBA_TM2CNT_H
-#define GBA_REG_TM3D_ADDR       GBA_IO_REGS_ADDR + GBA_TM3D
-#define GBA_REG_TM3CNT_L_ADDR   GBA_IO_REGS_ADDR + GBA_TM3CNT_L
-#define GBA_REG_TM3CNT_ADDR     GBA_IO_REGS_ADDR + GBA_TM3CNT
-#define GBA_REG_TM3CNT_H_ADDR   GBA_IO_REGS_ADDR + GBA_TM3CNT_H
-/* Timer Registers */
-#ifndef __asm__
-#define GBA_REG_TM0D            (*(volatile unsigned short *)(GBA_REG_TM0D_ADDR))
-#define GBA_REG_TM0CNT_L        (*(volatile unsigned short *)(GBA_REG_TM0CNT_L_ADDR))
-#define GBA_REG_TM0CNT          (*(volatile unsigned short *)(GBA_REG_TM0CNT_ADDR))
-#define GBA_REG_TM0CNT_H        (*(volatile unsigned short *)(GBA_REG_TM0CNT_H_ADDR))
-#define GBA_REG_TM1D            (*(volatile unsigned short *)(GBA_REG_TM1D_ADDR))
-#define GBA_REG_TM1CNT_L        (*(volatile unsigned short *)(GBA_REG_TM1CNT_L_ADDR))
-#define GBA_REG_TM1CNT          (*(volatile unsigned short *)(GBA_REG_TM1CNT_ADDR))
-#define GBA_REG_TM1CNT_H        (*(volatile unsigned short *)(GBA_REG_TM1CNT_H_ADDR))
-#define GBA_REG_TM2D            (*(volatile unsigned short *)(GBA_REG_TM2D_ADDR))
-#define GBA_REG_TM2CMT_L        (*(volatile unsigned short *)(GBA_REG_TM2CNT_L_ADDR))
-#define GBA_REG_TM2CNT          (*(volatile unsigned short *)(GBA_REG_TM2CNT_ADDR))
-#define GBA_REG_TM2CNT_H        (*(volatile unsigned short *)(GBA_REG_TM2CNT_H_ADDR))
-#define GBA_REG_TM3D            (*(volatile unsigned short *)(GBA_REG_TM3D_ADDR))
-#define GBA_REG_TM3CNT_L        (*(volatile unsigned short *)(GBA_REG_TM3CNT_L_ADDR))
-#define GBA_REG_TM3CNT          (*(volatile unsigned short *)(GBA_REG_TM3CNT_ADDR))
-#define GBA_REG_TM3CNT_H        (*(volatile unsigned short *)(GBA_REG_TM3CNT_H_ADDR))
-#endif
-
-/*---------------------------------------------------------------------------+
-|    SERIAL set1
-+----------------------------------------------------------------------------*/
-#define GBA_SER_BAUD_MASK       0x0003
-#define GBA_SER_BAUD_9600       0x0000
-#define GBA_SER_BAUD_38400      0x0001
-#define GBA_SER_BAUD_57600      0x0002
-#define GBA_SER_BAUD_115200     0x0003
-#define GBA_SER_CTS             0x0004
-
-/* Serial Communication address offsets */
-#define GBA_SIOMULTI0           0x00000120 /**< SIO Multi-Player Data 0      */
-#define GBA_SCD0                0x00000120 /**< SIO Multi-Player Data 0     X*/
-#define GBA_SIOMULTI1           0x00000122 /**< SIO Multi-Player Data 1      */
-#define GBA_SCD1                0x00000122 /**< SIO Multi-Player Data 1     X*/
-#define GBA_SIOMULTI2           0x00000124 /**< SIO Multi-Player Data 2      */
-#define GBA_SCD2                0x00000124 /**< SIO Multi-Player Data 2     X*/
-#define GBA_SIOMULTI3           0x00000126 /**< SIO Multi-Player Data 3      */
-#define GBA_SCD3                0x00000126 /**< SIO Multi-Player Data 3     X*/
-#define GBA_SIOCNT              0x00000128 /**< SIO Control                  */
-#define GBA_SCCNT               0x00000128 /**< SIO Control                 X*/
-#define GBA_SCCNT_L             0x00000128 /**< SIO Control                 X*/
-#define GBA_SIOMLT_SEND         0x0000012A /**< Data Send Register           */
-#define GBA_SCCNT_H             0x0000012A /**< Data Send Register          X*/
-/* Serial Communication addresses */
-#define GBA_REG_SIOMULTI0_ADDR   GBA_IO_REGS_ADDR + GBA_SIOMULTI0
-#define GBA_REG_SCD0_ADDR        GBA_IO_REGS_ADDR + GBA_SCD0
-#define GBA_REG_SIOMULTI1_ADDR   GBA_IO_REGS_ADDR + GBA_SIOMULTI1
-#define GBA_REG_SCD1_ADDR        GBA_IO_REGS_ADDR + GBA_SCD1
-#define GBA_REG_SIOMULTI2_ADDR   GBA_IO_REGS_ADDR + GBA_SIOMULTI2
-#define GBA_REG_SCD2_ADDR        GBA_IO_REGS_ADDR + GBA_SCD2
-#define GBA_REG_SIOMULTI3_ADDR   GBA_IO_REGS_ADDR + GBA_SIOMULTI3
-#define GBA_REG_SCD3_ADDR        GBA_IO_REGS_ADDR + GBA_SCD3
-#define GBA_REG_SCCNT_ADDR       GBA_IO_REGS_ADDR + GBA_SCCNT
-#define GBA_REG_SIOCNT_ADDR      GBA_IO_REGS_ADDR + GBA_SIOCNT
-#define GBA_REG_SCCNT_L_ADDR     GBA_IO_REGS_ADDR + GBA_SCCNT_L
-#define GBA_REG_SIOMLT_SEND_ADDR GBA_IO_REGS_ADDR + GBA_SIOMLT_SEND
-#define GBA_REG_SCCNT_H_ADDR     GBA_IO_REGS_ADDR + GBA_SCCNT_H
-/* Serial Communication registers */
-#ifndef __asm__
-#define GBA_REG_SIOMULTI0       (*(volatile unsigned short *)(GBA_REG_SIOMULTI0_ADDR))
-#define GBA_REG_SCD0            (*(volatile unsigned short *)(GBA_REG_SCD0_ADDR))
-#define GBA_REG_SIOMULTI1       (*(volatile unsigned short *)(GBA_REG_SIOMULTI1_ADDR))
-#define GBA_REG_SCD1            (*(volatile unsigned short *)(GBA_REG_SCD1_ADDR))
-#define GBA_REG_SIOMULTI2       (*(volatile unsigned short *)(GBA_REG_SIOMULTI2_ADDR))
-#define GBA_REG_SCD2            (*(volatile unsigned short *)(GBA_REG_SCD2_ADDR))
-#define GBA_REG_SIOMULTI3       (*(volatile unsigned short *)(GBA_REG_SIOMULTI3_ADDR))
-#define GBA_REG_SCD3            (*(volatile unsigned short *)(GBA_REG_SCD3_ADDR))
-#define GBA_REG_SCCNT           (*(volatile unsigned int   *)(GBA_REG_SCCNT_ADDR))
-#define GBA_REG_SIOCNT          (*(volatile unsigned short *)(GBA_REG_SIOCNT_ADDR))
-#define GBA_REG_SCCNT_L         (*(volatile unsigned short *)(GBA_REG_SCCNT_L_ADDR))
-#define GBA_REG_SIOMLT_SEND     (*(volatile unsigned short *)(GBA_REG_SIOMLT_SEND_ADDR))
-#define GBA_REG_SCCNT_H         (*(volatile unsigned short *)(GBA_REG_SCCNT_H_ADDR))
-#endif
-
-/*---------------------------------------------------------------------------+
-|    KEYPAD
-+----------------------------------------------------------------------------*/
-/* GBA Keys */
-#define GBA_KEY_A               0x0001
-#define GBA_KEY_B               0x0002
-#define GBA_KEY_SELECT          0x0004
-#define GBA_KEY_START           0x0008
-#define GBA_KEY_RIGHT           0x0010
-#define GBA_KEY_LEFT            0x0020
-#define GBA_KEY_UP              0x0040
-#define GBA_KEY_DOWN            0x0080
-#define GBA_KEY_R               0x0100
-#define GBA_KEY_L               0x0200
-#define GBA_KEY_ALL             0x03FF
-/* Keypad registers address offsets */
-#define GBA_P1                  0x00000130 /**< Key Status                  X*/
-#define GBA_KEYINPUT            0x00000130 /**< Key Status                   */
-#define GBA_P1CNT               0x00000132 /**< Key Interrupt Control       X*/
-#define GBA_KEYCNT              0x00000132 /**< Key Interrupt Control        */
-/* Keypad registers addresses */
-#define GBA_REG_P1_ADDR         GBA_IO_REGS_ADDR + GBA_P1
-#define GBA_REG_KEYINPUT_ADDR   GBA_IO_REGS_ADDR + GBA_KEYINPUT
-#define GBA_REG_P1CNT_ADDR      GBA_IO_REGS_ADDR + GBA_P1CNT
-#define GBA_REG_KEYCNT_ADDR     GBA_IO_REGS_ADDR + GBA_KEYCNT
-/* Keypad registers */
-#ifndef __asm__
-#define GBA_REG_P1              (*(volatile unsigned short *)(GBA_REG_P1_ADDR))
-#define GBA_REG_KEYINPUT        (*(volatile unsigned short *)(GBA_REG_KEYINPUT_ADDR))
-#define GBA_REG_P1CNT           (*(volatile unsigned short *)(GBA_REG_P1CNT_ADDR))
-#define GBA_REG_KEYCNT          (*(volatile unsigned short *)(GBA_REG_KEYCNT_ADDR))
-#endif
-
-/*---------------------------------------------------------------------------+
-|    SERIAL set2
-+----------------------------------------------------------------------------*/
-/* Serial Communication address offsets */
-#define GBA_R                    0x00000134 /**< Mode Selection             X*/
-#define GBA_RCNT                 0x00000134 /**< Mode Selection              */
-#define GBA_HS_CTRL              0x00000140 /**< JOY BUS Control Register   X*/
-#define GBA_JOYCNT               0x00000140 /**< JOY BUS Control Register    */
-#define GBA_JOYRE                0x00000150 /**< Receive Data Register      X*/
-#define GBA_JOYRE_L              0x00000150 /**< Receive Data Register low  X*/
-#define GBA_JOY_RECV_L           0x00000150 /**< Receive Data Register low   */
-#define GBA_JOYRE_H              0x00000152 /**< Receive Data Register high X*/
-#define GBA_JOY_RECV_H           0x00000152 /**< Receive Data Register high  */
-#define GBA_JOYTR                0x00000154 /**< Send Data Register         X*/
-#define GBA_JOYTR_L              0x00000154 /**< Send Data Register low     X*/
-#define GBA_JOY_TRANS_L          0x00000154 /**< Send Data Register low      */
-#define GBA_JOYTR_H              0x00000156 /**< Send Data Register high    X*/
-#define GBA_JOY_TRANS_H          0x00000156 /**< Send Data Register high     */
-#define GBA_JSTAT                0x00000158 /**< Receive Status Register    X*/
-#define GBA_JOYSTAT              0x00000158 /**< Receive Status Register     */
-/* Serial Communication register addresses */
-#define GBA_REG_R_ADDR           GBA_IO_REGS_ADDR + GBA_R
-#define GBA_REG_RCNT_ADDR        GBA_IO_REGS_ADDR + GBA_RCNT
-#define GBA_REG_HS_CTRL_ADDR     GBA_IO_REGS_ADDR + GBA_HS_CTRL
-#define GBA_REG_JOYCNT_ADDR      GBA_IO_REGS_ADDR + GBA_JOYCNT
-#define GBA_REG_JOYRE_ADDR       GBA_IO_REGS_ADDR + GBA_JOYRE
-#define GBA_REG_JOYRE_L_ADDR     GBA_IO_REGS_ADDR + GBA_JOYRE_L
-#define GBA_REG_JOY_RECV_L_ADDR  GBA_IO_REGS_ADDR + GBA_JOY_RECV_L
-#define GBA_REG_JOYRE_H_ADDR     GBA_IO_REGS_ADDR + GBA_JOYRE_H
-#define GBA_REG_JOY_RECV_H_ADDR  GBA_IO_REGS_ADDR + GBA_JOY_RECV_H
-#define GBA_REG_JOYTR_ADDR       GBA_IO_REGS_ADDR + GBA_JOYTR
-#define GBA_REG_JOYTR_L_ADDR     GBA_IO_REGS_ADDR + GBA_JOYTR_L
-#define GBA_REG_JOY_TRANS_L_ADDR GBA_IO_REGS_ADDR + GBA_JOY_TRANS_L
-#define GBA_REG_JOYTR_H_ADDR     GBA_IO_REGS_ADDR + GBA_JOYTR_H
-#define GBA_REG_JOY_TRANS_H_ADDR GBA_IO_REGS_ADDR + GBA_JOY_TRANS_H
-#define GBA_REG_JSTAT_ADDR       GBA_IO_REGS_ADDR + GBA_JSTAT
-#define GBA_REG_JOYSTAT_ADDR     GBA_IO_REGS_ADDR + GBA_JOYSTAT
-/* Serial Communication registers */
-#ifndef __asm__
-#define GBA_REG_R               (*(volatile unsigned short *)(GBA_REG_R_ADDR))
-#define GBA_REG_RCNT            (*(volatile unsigned short *)(GBA_REG_RCNT_ADDR))
-#define GBA_REG_HS_CTRL         (*(volatile unsigned short *)(GBA_REG_HS_CTRL_ADDR))
-#define GBA_REG_JOYCNT          (*(volatile unsigned short *)(GBA_REG_JOYCNT_ADDR))
-#define GBA_REG_JOYRE           (*(volatile unsigned int   *)(GBA_REG_JOYRE_ADDR))
-#define GBA_REG_JOYRE_L         (*(volatile unsigned short *)(GBA_REG_JOYRE_L_ADDR))
-#define GBA_REG_JOY_RECV_L      (*(volatile unsigned short *)(GBA_REG_JOY_RECV_L_ADDR))
-#define GBA_REG_JOYRE_H         (*(volatile unsigned short *)(GBA_REG_JOYRE_H_ADDR))
-#define GBA_REG_JOY_RECV_H      (*(volatile unsigned short *)(GBA_REG_JOY_RECV_H_ADDR))
-#define GBA_REG_JOYTR           (*(volatile unsigned int   *)(GBA_REG_JOYTR_ADDR))
-#define GBA_REG_JOYTR_L         (*(volatile unsigned short *)(GBA_REG_JOYTR_L_ADDR))
-#define GBA_REG_JOY_TRANS_L     (*(volatile unsigned short *)(GBA_REG_JOY_TRANS_L_ADDR))
-#define GBA_REG_JOYTR_H         (*(volatile unsigned short *)(GBA_REG_JOYTR_H_ADDR))
-#define GBA_REG_JOY_TRANS_H     (*(volatile unsigned short *)(GBA_REG_JOY_TRANS_H_ADDR))
-#define GBA_REG_JSTAT           (*(volatile unsigned int   *)(GBA_REG_JSTAT_ADDR))
-#define GBA_REG_JOYSTAT         (*(volatile unsigned short *)(GBA_REG_JOYSTAT_ADDR))
-#endif
-
-/*---------------------------------------------------------------------------+
-|    INTERRUPT
-+----------------------------------------------------------------------------*/
-/* Interrupt sources */
-#define GBA_INT_VBLANK          0x0001
-#define GBA_INT_HBLANK          0x0002
-#define GBA_INT_VCOUNT          0x0004
-#define GBA_INT_TIMER0          0x0008
-#define GBA_INT_TIMER1          0x0010
-#define GBA_INT_TIMER2          0x0020
-#define GBA_INT_TIMER3          0x0040
-#define GBA_INT_SERIAL          0x0080
-#define GBA_INT_DMA0            0x0100
-#define GBA_INT_DMA1            0x0200
-#define GBA_INT_DMA2            0x0400
-#define GBA_INT_DMA3            0x0800
-#define GBA_INT_KEY             0x1000
-#define GBA_INT_CART            0x2000
-/* Interrupt address offsets */
-#define GBA_IE                  0x00000200 /**< Interrupt Enable        */
-#define GBA_IF                  0x00000202 /**< Interrupt Flags         */
-#define GBA_IME                 0x00000208 /**< Interrupt Master Enable */
-/* Interrupt addresses */
-#define GBA_REG_IE_ADDR         GBA_IO_REGS_ADDR + GBA_IE
-#define GBA_REG_IF_ADDR         GBA_IO_REGS_ADDR + GBA_IF
-#define GBA_REG_IME_ADDR        GBA_IO_REGS_ADDR + GBA_IME
-/* Interrupt registers */
-#ifndef __asm__
-#define GBA_REG_IE              (*(volatile unsigned short *)(GBA_REG_IE_ADDR))
-#define GBA_REG_IF              (*(volatile unsigned short *)(GBA_REG_IF_ADDR))
-#define GBA_REG_IME             (*(volatile unsigned short *)(GBA_REG_IME_ADDR))
-#endif
-
-/*---------------------------------------------------------------------------+
-|    Waitstate and Power-Down Control registers
-+----------------------------------------------------------------------------*/
-#define GBA_PHI_MASK            0x1800
-#define GBA_PHI_NONE            0x0000
-#define GBA_PHI_4_19MHZ         0x0800
-#define GBA_PHI_8_38MHZ         0x1000
-#define GBA_PHI_16_76MHZ        0x1800
-/* Waitstate and Power-Down Control address offsets */
-#define GBA_WSCNT               0x00000204 /**< Waitstate Control           X*/
-#define GBA_WAITCNT             0x00000204 /**< Waitstate Control            */
-#define GBA_PAUSE               0x00000300 /**< Power Down Control          X*/
-#define GBA_HALTCNT             0x00000300 /**< Power Down Control           */
-/* Waitstate and Power-Down Control addresses */
-#define GBA_REG_WSCNT_ADDR      GBA_IO_REGS_ADDR + GBA_WSCNT
-#define GBA_REG_WAITCNT_ADDR    GBA_IO_REGS_ADDR + GBA_WAITCNT
-#define GBA_REG_PAUSE_ADDR      GBA_IO_REGS_ADDR + GBA_PAUSE
-#define GBA_REG_HALTCNT_ADDR    GBA_IO_REGS_ADDR + GBA_HALTCNT
-/* Waitstate and Power-Down Control registers */
-#ifndef __asm__
-#define GBA_REG_WSCNT           (*(volatile unsigned short *)(GBA_REG_WSCNT_ADDR))
-#define GBA_REG_WAITCNT         (*(volatile unsigned short *)(GBA_REG_WAITCNT_ADDR))
-#define GBA_REG_PAUSE           (*(volatile unsigned short *)(GBA_REG_PAUSE_ADDR))
-#define GBA_REG_HALTCNT         (*(volatile unsigned short *)(GBA_REG_HALTCNT_ADDR))
-#endif
-
-
-/*
- * @TODO remove UART register defines
- * define for RTEMS UART registers to be able to compile
- */
-#define RSRBR   0
-#define RSTHR   1
-#define RSIER   2
-#define RSIIR   3
-#define RSFCR   4
-#define RSLCR   5
-#define RSLSR   6
-#define RSDLL   7
-#define RSDLH   8
-#define RSCNT   9
-
-
-#endif /* _GBA_REGISTERS_H */
diff --git a/c/src/lib/libbsp/arm/gba/irq/irq.c b/c/src/lib/libbsp/arm/gba/irq/irq.c
deleted file mode 100644
index ba2751a..0000000
--- a/c/src/lib/libbsp/arm/gba/irq/irq.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- *  @file irq.c
- *
- *  This file contains the implementation of the function described in irq.h.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2010 embedded brains GmbH.
- *
- *  Copyright (c) 2002 by Jay Monkman <jtm at smoothsmoothie.com>
- *
- *  Copyright (c) 2002 by Charlie Steader <charlies at poliac.com>
- *
- *  Copyright (c) 2004 by Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#include <bsp.h>
-#include <bsp/irq.h>
-#include <bsp/irq-generic.h>
-
-#include <gba_registers.h>
-
-/*
- * Prototypes
- */
-void bsp_interrupt_dispatch(void);
-
-void bsp_interrupt_dispatch(void)
-{
-  unsigned reg_ie = GBA_REG_IE;
-  unsigned reg_if = GBA_REG_IF & reg_ie;
-  rtems_vector_number vector = 31 - __builtin_clz(reg_if);
-
-  bsp_interrupt_handler_dispatch(vector);
-
-  GBA_REG_IF = 1 << vector;
-}
-
-rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
-{
-  GBA_REG_IE |= 1 << vector;
-
-  return RTEMS_SUCCESSFUL;
-}
-
-rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
-{
-  GBA_REG_IE &= ~(1 << vector);
-
-  return RTEMS_SUCCESSFUL;
-}
-
-rtems_status_code bsp_interrupt_facility_initialize(void)
-{
-  /* clear all interrupt status flags */
-  GBA_REG_IF = 0xffff;
-  /* disable all interrupts */
-  GBA_REG_IE = 0;
-  /* set master interrupt enable */
-  GBA_REG_IME = 1;
-
-  /* Exception handler is already present in the ROM BIOS */
-
-  return RTEMS_SUCCESSFUL;
-}
diff --git a/c/src/lib/libbsp/arm/gba/irq/irq.h b/c/src/lib/libbsp/arm/gba/irq/irq.h
deleted file mode 100644
index 37ae527..0000000
--- a/c/src/lib/libbsp/arm/gba/irq/irq.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * @file
- *
- * @ingroup gba_interrupt
- *
- * @brief Interrupt definitions.
- */
-
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2010 embedded brains GmbH.
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef __asm__
-
-#include <rtems.h>
-#include <rtems/irq.h>
-#include <rtems/irq-extension.h>
-
-#endif /* __asm__ */
-
-#ifndef _IRQ_H_
-#define _IRQ_H_
-
-/**
- * @defgroup gba_interrupt Interrupt Support
- * 
- * @ingroup arm_gba
- * 
- * @brief Interrupt support.
- */
-
-/*---------------------------------------------------------------------------*
- *  MACROS                                                                   *
- *---------------------------------------------------------------------------*/
-
-#define ENABLE_IRQ()   GBA_REG_IME = 1;
-#define DISABLE_IRQ()  GBA_REG_IME = 0;
-
-
-/*-------------------------------------------------------------------------+
-| Constants
-+--------------------------------------------------------------------------*/
-
-#define BSP_IRQ_VBLANK   0
-#define BSP_IRQ_HBLANK   1
-#define BSP_IRQ_VCOUNTER 2
-#define BSP_IRQ_TIMER0   3
-#define BSP_IRQ_TIMER1   4
-#define BSP_IRQ_TIMER2   5
-#define BSP_IRQ_TIMER3   6
-#define BSP_IRQ_SERIAL   7
-#define BSP_IRQ_DMA0     8
-#define BSP_IRQ_DMA1     9
-#define BSP_IRQ_DMA2     10
-#define BSP_IRQ_DMA3     11
-#define BSP_IRQ_KEY      12
-#define BSP_IRQ_CART     13
-#define BSP_IRQ_NA14     14
-#define BSP_IRQ_NA15     15
-#define BSP_MAX_INT      16
-
-#define BSP_INTERRUPT_VECTOR_MIN 0
-
-#define BSP_INTERRUPT_VECTOR_MAX (BSP_MAX_INT - 1)
-
-#endif /* _IRQ_H_ */
diff --git a/c/src/lib/libbsp/arm/gba/make/custom/gba.cfg b/c/src/lib/libbsp/arm/gba/make/custom/gba.cfg
deleted file mode 100644
index 71ed375..0000000
--- a/c/src/lib/libbsp/arm/gba/make/custom/gba.cfg
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-#  Config file for Gameboy Advance ARM --
-#
-
-include $(RTEMS_ROOT)/make/custom/default.cfg
-
-RTEMS_CPU=arm
-RTEMS_CPU_MODEL=arm7tdmi
-
-#  This contains the compiler options necessary to select the CPU model
-#  and (hopefully) optimize for it.
-#
-CPU_CFLAGS = -mcpu=$(RTEMS_CPU_MODEL)
-
-# optimize flag: typically -O2
-CFLAGS_OPTIMIZE_V = -O2 -g
-
-# Some GBA simulators want a .gba extension.
-define bsp-post-link
-	$(OBJCOPY) -O binary --remove-section=.comment \
-	    --remove-section=.note --strip-unneeded \
-	    $(basename $@)$(EXEEXT) $(basename $@)$(DOWNEXT)
-	$(default-bsp-post-link)
-endef
diff --git a/c/src/lib/libbsp/arm/gba/preinstall.am b/c/src/lib/libbsp/arm/gba/preinstall.am
deleted file mode 100644
index 78c7b89..0000000
--- a/c/src/lib/libbsp/arm/gba/preinstall.am
+++ /dev/null
@@ -1,99 +0,0 @@
-## Automatically generated by ampolish3 - Do not edit
-
-if AMPOLISH3
-$(srcdir)/preinstall.am: Makefile.am
-	$(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
-endif
-
-PREINSTALL_DIRS =
-DISTCLEANFILES += $(PREINSTALL_DIRS)
-
-all-am: $(PREINSTALL_FILES)
-
-PREINSTALL_FILES =
-CLEANFILES = $(PREINSTALL_FILES)
-
-all-local: $(TMPINSTALL_FILES)
-
-TMPINSTALL_FILES =
-CLEANFILES += $(TMPINSTALL_FILES)
-
-$(PROJECT_LIB)/$(dirstamp):
-	@$(MKDIR_P) $(PROJECT_LIB)
-	@: > $(PROJECT_LIB)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_LIB)/$(dirstamp)
-
-$(PROJECT_INCLUDE)/$(dirstamp):
-	@$(MKDIR_P) $(PROJECT_INCLUDE)
-	@: > $(PROJECT_INCLUDE)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
-
-$(PROJECT_INCLUDE)/bsp/$(dirstamp):
-	@$(MKDIR_P) $(PROJECT_INCLUDE)/bsp
-	@: > $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-
-$(PROJECT_LIB)/bsp_specs: bsp_specs $(PROJECT_LIB)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_LIB)/bsp_specs
-PREINSTALL_FILES += $(PROJECT_LIB)/bsp_specs
-
-$(PROJECT_INCLUDE)/bsp.h: include/bsp.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp.h
-
-$(PROJECT_INCLUDE)/arm_mode_bits.h: include/arm_mode_bits.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/arm_mode_bits.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/arm_mode_bits.h
-
-$(PROJECT_INCLUDE)/asm_macros.h: include/asm_macros.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/asm_macros.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/asm_macros.h
-
-$(PROJECT_INCLUDE)/gba_registers.h: include/gba_registers.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/gba_registers.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/gba_registers.h
-
-$(PROJECT_INCLUDE)/conio.h: include/conio.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/conio.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/conio.h
-
-$(PROJECT_INCLUDE)/tm27.h: ../../shared/include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.h
-
-$(PROJECT_INCLUDE)/gba.h: include/gba.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/gba.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/gba.h
-
-$(PROJECT_INCLUDE)/bspopts.h: include/bspopts.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bspopts.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bspopts.h
-
-$(PROJECT_INCLUDE)/coverhd.h: ../../shared/include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
-
-$(PROJECT_INCLUDE)/bsp/bootcard.h: ../../shared/include/bootcard.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/bootcard.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/bootcard.h
-
-$(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT)
-TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT)
-
-$(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
-PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
-
-$(PROJECT_INCLUDE)/bsp/irq-generic.h: ../../shared/include/irq-generic.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-generic.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-generic.h
-
-$(PROJECT_INCLUDE)/bsp/irq-info.h: ../../shared/include/irq-info.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq-info.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq-info.h
-
-$(PROJECT_INCLUDE)/bsp/irq.h: irq/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp)
-	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h
-
diff --git a/c/src/lib/libbsp/arm/gba/start/logo.S b/c/src/lib/libbsp/arm/gba/start/logo.S
deleted file mode 100644
index 0270710..0000000
--- a/c/src/lib/libbsp/arm/gba/start/logo.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- *  @file logo.S
- *
- *  Nintendo Logo Character Data [offset 0x04].
- */
-/*
- *  RTEMS GBA BSP
- *
- *  THIS CODE WAS NOT MADE IN ASSOCIATION WITH NINTENDO AND DOES NOT MAKE USE
- *  OF ANY INTELLECTUAL PROPERTY CLAIMED BY NINTENDO.
- *
- *  GAMEBOY ADVANCE IS A TRADEMARK OF NINTENDO.
- */
-/* @cond  INCLUDE_ASM */
-        .word   0x51AEFF24, 0x21A29A69, 0x0A82843D, 0xAD09E484
-        .word   0x988B2411, 0x217F81C0, 0x19BE52A3, 0x20CE0993
-        .word   0x4A4A4610, 0xEC3127F8, 0x33E8C758, 0xBFCEE382
-        .word   0x94DFF485, 0xC1094BCE, 0xC08A5694, 0xFCA77213
-        .word   0x734D849F, 0x619ACAA3, 0x27A39758, 0x769803FC
-        .word   0x61C71D23, 0x56AE0403, 0x008438BF, 0xFD0EA740
-        .word   0x03FE52FF, 0xF130956F, 0x85C0FB97, 0x2580D660
-        .word   0x03BE63A9, 0xE2384E01, 0xFF34A2F9, 0x44033EBB
-        .word   0xCB900078, 0x943A1188, 0x637CC065, 0xAF3CF087
-        .word   0x8BE425D6, 0x72AC0A38, 0x07F8D421
-/* @endcond */
diff --git a/c/src/lib/libbsp/arm/gba/start/start.S b/c/src/lib/libbsp/arm/gba/start/start.S
deleted file mode 100644
index 99dfc9a..0000000
--- a/c/src/lib/libbsp/arm/gba/start/start.S
+++ /dev/null
@@ -1,396 +0,0 @@
-/**
- *  @file start.S
- *
- *  RTEMS entry point.
- */
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) by Jeff Frohwein.
- *
- *  Copyright (c) 2003, Jason Wilkins.
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *  based on crt0.S v1.28 by Jeff Frohwein
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-/*****************************************************************************
- * This source file is based on work by Jeff Frohwein and Jason Wilkins
- *****************************************************************************
- *****************************************************************************
- * crt0.S v1.28 by Jeff Frohwein
- * :
- * This file is released into the public domain for commercial
- * or non-commercial usage with no restrictions placed upon it.
- *****************************************************************************
- * Copyright 2003, Jason Wilkins.  This source code is free for any use except
- * that this copyright notice and the following disclaimers remain intact when
- * the source is distributed.  Object code and binary distributions may be made
- * as if the code were in the public domain.
- *
- * THIS CODE WAS NOT MADE IN ASSOCIATION WITH NINTENDO AND DOES NOT MAKE USE
- * OF ANY INTELLECTUAL PROPERTY CLAIMED BY NINTENDO.
- *
- * GAMEBOY ADVANCE IS A TRADEMARK OF NINTENDO.
- *
- * THIS CODE HAS BEEN PROVIDED "AS-IS" WITHOUT A WARRANTY OF ANY KIND, EITHER
- * EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO IMPLIED WARRANTIES OF
- * MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  THE ENTIRE RISK AS TO THE
- * QUALITY OR PERFORMANCE OF THE CODE IS WITH YOU.
- *
- * IN NO EVENT, UNLESS AGREED TO IN WRITING, WILL ANY COPYRIGHT HOLDER, OR ANY
- * OTHER PARTY, BE HELD LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OR
- * INABILITY TO USE THIS CODE.
- *****************************************************************************/
-
-#define __asm__
-#include <rtems/asm.h>
-#include <asm_macros.h>
-#include <arm_mode_bits.h>
-/* @cond  INCLUDE_ASM */
-
-#ifndef NINTENDO_LOGO
-#define NINTENDO_LOGO 1
-#endif
-
-#ifndef GBA_MULTIBOOT
-#define GBA_MULTIBOOT 1
-#endif
-
-#ifndef GAME_TITLE
-#define GAME_TITLE "RTEMS-RTOS  "
-#endif
-
-#ifdef GBA_MULTIBOOT
-  #ifndef GAME_CODE
-  #define GAME_CODE "MB  "
-  #endif
-  #ifndef COMPLEMENT_CHECK
-  #define COMPLEMENT_CHECK 0xE2
-  #endif
-#else
-  #ifndef GAME_CODE
-  #define GAME_CODE "GBA "
-  #endif
-  #ifndef COMPLEMENT_CHECK
-  #define COMPLEMENT_CHECK 0xC7
-  #endif
-#endif
-
-#ifndef MAKER_CODE
-#define MAKER_CODE "00"
-#endif
-
-/**
- *  RTEMS entry point
- *  function void _start(void)
- *
- */
-/*****************************************************************************\
-                           ROM Header
-\*****************************************************************************/
-
-.text
-.align
-.arm
-
-/*---------------------------------------------------------------------------+
-|  Nintendo Header:
-|   A special header is required or the GBA will refuse to run your code.
-|
-|  File offsets from 0x0200000 or 0x08000000.
-+----------------------------------------------------------------------------*/
-    PUBLIC_ARM_FUNCTION(_start)
-         b       SYM(_real_start)    /* 0x00 Entry Point                     */
-    SYM(_gba_rom_header):
-#if NINTENDO_LOGO                    /* 0x04 Nintendo Logo Character Data    */
-#include        "logo.S"
-#else
-        .fill   156, 1, 0            /* 0x04 Nintendo Logo Character Data    */
-#endif
-        .ascii  GAME_TITLE           /* 0xA0 Game Title                      */
-        .ascii  GAME_CODE            /* 0xAC Game Code                       */
-        .ascii  MAKER_CODE           /* 0xB0 Maker Code                      */
-        .byte   0x96                 /* 0xB2 Fixed Value                     */
-        .byte   0                    /* 0xB3 Main Unit Code                  */
-        .byte   0                    /* 0xB4 Device Type                     */
-        .byte   0, 0, 0, 0, 0, 0, 0  /* 0xB5 Reserved (7 Bytes)              */
-        .byte   0                    /* 0xBC Software Version No.            */
-        .byte   COMPLEMENT_CHECK     /* 0xBD Complement Check                */
-        .byte   0, 0                 /* 0xBE Reserved                        */
-    .Lheader_end:
-
-
-#if GBA_MULTIBOOT
-/*---------------------------------------------------------------------------+
-|  Multiboot Header:
-|  The following header is required if the code is meant for Multiboot.
-|
-|  If the code has been downloaded through the serial port, then the GBA BIOS
-|  will set offset 0xC0 depending on the boot method:
-|  1 = JoyBus, 3 = Multiboot
-|  It remains 0 for cartridges.
-|
-|  offset 0xC4 will be set to the GBA's assigned slave number 1-3.
-|  This header also defines the symbols _boot_method and _slave_number for
-|  easy reference to these values.  Some libraries may depend on them whether
-|  or not the code is meant for Multiboot.
-|
-+----------------------------------------------------------------------------*/
-    SYM(_gba_multiboot_start):
-        b       SYM(_real_start)               /* 0xC0 Multiboot Entry Point */
-    OBJECT(_boot_method)
-        .byte   0                              /* 0xC4 Boot Method           */
-    OBJECT(_slave_number)
-        .byte   0                              /* 0xC5 Slave Number (1-3)    */
-        .align
-    STATIC_OBJECT(_gba_mb_reserved)
-        .word   0, 0, 0, 0, 0, 0               /* 0xC8 Reserved (6 words)    */
-    SYM(_gba_joybus_start):
-        b       SYM(_real_start)               /* 0xE0 JoyBus Entry Point    */
-    .Lmultiboot_header_end:
-#endif
-
-/*---------------------------------------------------------------------------+
-|    Restore registers and stack from GBA bios IRQ frame and call ISR_Handler
-+----------------------------------------------------------------------------*/
-    EXTERN(_ISR_Handler)
-    .align
-    PUBLIC_ARM_FUNCTION(_gba_ISR_handler)
-        ldmfd  r13!,{r0-r3,r12,r14}
-        b      _ARMV4_Exception_interrupt
-    LABEL_END(_gba_ISR_handler)
-
-
-/*---------------------------------------------------------------------------+
-|    Code to initialize the low-level BSP environment
-+----------------------------------------------------------------------------*/
-    SYM(_real_start):
-    /* Initialize IRQ and USR Stack Pointers */
-    SYM(_gba_init_stacks):
-        mov     r0, #(Mode_IRQ | Int_Bits)       /* No interrupts            */
-        msr     cpsr, r0                         /* switch to IRQ mode       */
-        ldr     sp, =__sp_irq                    /* defined in linkcmds      */
-        mov     r0, #(ModePriv | Int_Bits)       /* No interrupts            */
-        msr     cpsr, r0                         /* switch to System Mode    */
-        ldr     sp, =__sp_usr                    /* defined in linkcmds      */
-
-    /* Switch to Thumb Mode */
-    SYM(_gba_bx_thumb):
-        adr     r0, .Lthumb + 1
-        bx      r0
-        .thumb
-    .Lthumb:
-    /* Reduce gameboy waitstates */
-    SYM(_reduce_waitstates):
-        ldr     r1, =0x4000204
-        ldrh    r0, =0x4490
-        strh    r0, [r1]
-
-
-#if GBA_MULTIBOOT
-/*---------------------------------------------------------------------------+
-|  Load Multiboot Image from ROM into RAM:
-|  Check to see if the image is meant for Multiboot or GamePak.  If it is for
-|  Multiboot then check if it is currently running from EWRAM or from CARTROM.
-|  If it is running from CARTROM, then it needs to be copied to EWRAM and
-|  re-executed from the beginning.
-|
-|  The reason for all this is to allow a program to be used "as-is" with a
-|  flash-cart, emulator, or MBV2-style Multiboot cable without rebuilding.
-|
-|  NOTE: Any branchs used above this code need to be relative.
-+----------------------------------------------------------------------------*/
-    STATIC_THUMB_FUNCTION(_gba_load_multiboot)
-        ldr     r0, =_start            /* 8000000h=GamePak 2000000h=Multiboot*/
-        ldr     r1, =__gba_rom_start   /* defined in linkcmds                */
-        cmp     r0, r1
-        beq     SYM(_no_load_multiboot)/* skip if GamePak                    */
-        mov     r3, pc
-        cmp     r1, r3                 /* check program counter              */
-        bhi     SYM(_no_load_multiboot)/* skip if already running from EWRAM */
-        sub     r3, r1, r0             /* diff between _start and CARTROM    */
-        ldr     r2, =__load_stop_data  /* defined in linkcmds                */
-        add     r2, r2, r3             /* adjust pointer into ROM            */
-        bl      SYM(gba_move_memory)
-
-        /* patch multiboot header */
-        ldr     r0, =SYM(_boot_method)
-        mov     r1, #3
-        str     r1, [r0]
-
-        /* remember that multiboot image came from GamePak */
-        ldr     r0, =SYM(_gba_flash_loaded_multiboot)
-        mov     r1, #0
-        str     r1, [r0]
-
-        ldr     r0, =SYM(_start)
-        bx      r0                      /* restart                           */
-    LABEL_END(_gba_load_multiboot)
-
-        .align 4
-    OBJECT(_gba_flash_loaded_multiboot)
-        .word -1
-    LABEL_END(_gba_flash_loaded_multiboot)
-    SYM(_no_load_multiboot):
-#endif
-
-/* Initialize Standard Sections */
-    STATIC_THUMB_FUNCTION(_gba_init_std_sections)
-        /* Copy internal work ram (iwram section ROM to RAM)*/
-        ldr     r0,=__iwram_start
-        ldr     r1,=__load_start_iwram
-        ldr     r2,=__load_stop_iwram
-        bl      SYM(gba_move_memory)
-
-        /* Copy external work ram (ewram section ROM to RAM) */
-        ldr     r0,=__ewram_start
-        ldr     r1,=__load_start_ewram
-        ldr     r2,=__load_stop_ewram
-        bl      SYM(gba_move_memory)
-
-        /* load initial values of variables like 'int foo = 42' */
-        ldr     r0, =__data_start      /* defined in linkcmds               */
-        ldr     r1, =__load_start_data /* defined in linkcmds               */
-        ldr     r2, =__load_stop_data  /* defined in linkcmds               */
-        bl      SYM(gba_move_memory)
-
-        /* zero the bss */
-        ldr     r0, =__bss_start       /* defined in linkcmds               */
-        ldr     r1, =__bss_end         /* defined in linkcmds               */
-        bl      SYM(gba_zero_memory)
-    LABEL_END(_gba_init_std_sections)
-
-/* Initialize Interrupt Vector */
-    STATIC_THUMB_FUNCTION(_gba_init_intr_vect)
-        ldr     r1, =__irq_vector    /* defined in linkcmds                 */
-        ldr     r0, =SYM(_gba_ISR_handler)
-        str     r0, [r1]
-    LABEL_END(_gba_init_intr_vect)
-
-
-/* Enter the C code.  If it returns, then restart */
-    STATIC_THUMB_FUNCTION(_gba_call_arm_boot_card)
-        adr     r1, .Larm
-        bx      r1
-        .arm
-    .Larm:
-        ldr     r1, =boot_card
-        mov     r0, #0
-        bl      SYM(_gba_call_via_r1)
-
-        ldr     r0, =SYM(_gba_reset)
-    SYM(_gba_call_via_r1):
-        bx      r1
-
-/* GBA Reset  */
-    PUBLIC_ARM_FUNCTION(_gba_reset)
-        adr     r0, .Lthumb2 + 1
-        bx      r0
-        .thumb
-    .Lthumb2:
-        /* disable interrupts */
-        ldr     r0, =0x04000208
-        mov     r1, #0
-        strb    r1, [r0]
-
-        /* reset stack, default free area */
-        ldr     r0, =0x03007F00
-        mov     sp, r0
-
-#if GBA_MULTIBOOT
-        ldr     r0, =SYM(_gba_flash_loaded_multiboot)
-        ldr     r0, [r0]
-        cmp     r0, #0
-        beq     SYM(_reset)
-#endif
-
-        ldr     r0, =_start            /* defined in linkcmds               */
-        ldr     r1, =__gba_rom_start   /* defined in linkcmds               */
-        sub     r0, r0, r1
-        lsr     r0, r0, #24
-
-   SYM(_reset):
-        /* soft reset (swi 0) parameter: where is _start */
-        ldr     r1, =0x03007FFA
-        strb    r0, [r1]
-        mov     r0, #0xFE              /* clear all but EWRAM               */
-        swi     1
-        swi     0
-    LABEL_END(_gba_reset)
-
-
-/*---------------------------------------------------------------------------+
-|   Library Functions
-+----------------------------------------------------------------------------*/
-
-/* gba_zero_memory */
-    PUBLIC_THUMB_FUNCTION(gba_zero_memory)
-        mov     r2, #0
-        nop
-    LABEL_END(gba_zero_memory)
-
-/* gba_set_memory */
-    PUBLIC_THUMB_FUNCTION(gba_set_memory)
-        cmp     r0, r1
-        bcs     .Lset_memory_return
-
-    .Lset_memory_loop:
-        stmia   r0!, {r2}
-        cmp     r0, r1
-        bcc     .Lset_memory_loop
-
-    .Lset_memory_return:
-        bx      lr
-    LABEL_END(gba_set_memory)
-
-/* gba_move_memory */
-    .align
-    PUBLIC_THUMB_FUNCTION(gba_move_memory)
-        cmp     r0, r1
-        bcc     .Lforward_move  /* if dst < src then forward copy */
-        bhi     .Lreverse_move  /* if dst > src then reverse copy */
-        bx      lr              /* else dst == src, nothing to do */
-
-    .Lforward_move:
-        cmp     r1, r2
-        bcs     .Lmove_memory_return
-
-    .Lforward_move_loop:
-        ldmia   r1!, {r3}
-        stmia   r0!, {r3}
-        cmp     r1, r2
-        bcc     .Lforward_move_loop
-        bx      lr
-
-    .Lreverse_move:
-        cmp     r2, r1
-        bls     .Lmove_memory_return
-        sub     r3, r2, r1
-        add     r0, r0, r3
-
-    .Lreverse_move_loop:
-        sub     r2, r2, #4
-        ldr     r3, [r2]
-        sub     r0, r0, #4
-        str     r3, [r0]
-        cmp     r2, r1
-        bhi     .Lreverse_move_loop
-
-    .Lmove_memory_return:
-        bx      lr
-    LABEL_END(gba_move_memory)
-
-
-/* @todo FIXME: Remove unused handler needed by ../score/cpu_asm.S
- *****************************************************************************/
-        .arm
-        .global SWI_Handler
-SWI_Handler:
-        mov pc, lr
-/* @endcond     */
-
diff --git a/c/src/lib/libbsp/arm/gba/startup/bspgetworkarea.c b/c/src/lib/libbsp/arm/gba/startup/bspgetworkarea.c
deleted file mode 100644
index ca48afe..0000000
--- a/c/src/lib/libbsp/arm/gba/startup/bspgetworkarea.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#include <bsp.h>
-#include <bsp/bootcard.h>
-#include <stdint.h>
-
-extern int _end;
-extern int __heap_limit;
-
-void bsp_work_area_initialize(void)
-{
-  void *area_start = (void *)&_end;
-  uintptr_t area_size  = (uintptr_t)&__heap_limit - (uintptr_t)&_end;
-
-  bsp_work_area_initialize_default( area_start, area_size );
-}
-
diff --git a/c/src/lib/libbsp/arm/gba/startup/bspreset.c b/c/src/lib/libbsp/arm/gba/startup/bspreset.c
deleted file mode 100644
index 1c06423..0000000
--- a/c/src/lib/libbsp/arm/gba/startup/bspreset.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#include <bsp.h>
-#include <bsp/bootcard.h>
-
-void bsp_reset(void)
-{
-  __asm__ volatile ("ldr  r0, =_gba_reset");
-  __asm__ volatile ("bx   r0");
-}
diff --git a/c/src/lib/libbsp/arm/gba/startup/bspstart.c b/c/src/lib/libbsp/arm/gba/startup/bspstart.c
deleted file mode 100644
index b5e37d4..0000000
--- a/c/src/lib/libbsp/arm/gba/startup/bspstart.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *  @file bspstart.c
- *
- *  This file contains the GBA BSP startup package.
- *  It includes application, board, and monitor specific initialization and
- *  configuration. The generic CPU dependent initialization has been
- *  performed before this routine is invoked.
- */
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#include <stdio.h>
-#include <bsp.h>
-#include <bsp/irq-generic.h>
-#include <rtems/bspIo.h>
-#include <gba.h>
-#include <conio.h>
-
-/** Chip registers */
-volatile unsigned int *Regs = (unsigned int *)GBA_IO_REGS_ADDR;
-
-/**
- *  @brief BSP Start
- *
- *  Called before main is invoked.
- *
- *  @param  None
- *  @return None
- */
-static void bsp_start_default( void )
-{
-  /* Init conio  */
-  gba_textmode(CO60);
-
-  /* Init rtems exceptions management
-   *  !!!!!GBA -- Can't use exception vectors in GBA because they are
-   *  already in GBA ROM BIOS
-   */
-  /* rtems_exception_init_mngt(); */
-
-  /* Init rtems interrupt management */
-  bsp_interrupt_initialize();
-}
-
-/**
- *  @brief weak alias for bsp_start_default
- *
- *  By making this a weak alias for bsp_start_default, a brave soul
- *  can override the actual bsp_start routine used.
- */
-void bsp_start (void) __attribute__ ((weak, alias("bsp_start_default")));
diff --git a/c/src/lib/libbsp/arm/gba/startup/linkcmds b/c/src/lib/libbsp/arm/gba/startup/linkcmds
deleted file mode 100644
index 4c9fee2..0000000
--- a/c/src/lib/libbsp/arm/gba/startup/linkcmds
+++ /dev/null
@@ -1,386 +0,0 @@
-/**
- *  @file linkcmds
- *
- *  GBA BSP linker script
- */
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) Jeff Frohwein
- *
- *  Copyright (c) 2003  Jason Wilkins
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *
- *  http://www.rtems.org/license/LICENSE.
- */
-
-/*****************************************************************************
- * This Linker Script is based on work by Jeff Frohwein and Jason Wilkins
- *****************************************************************************
- * Linker Script v1.3 by Jeff Frohwein
- * :
- * This file is released into the public domain
- * for commercial or non-commercial use with no
- * restrictions placed upon it.
- *****************************************************************************
- * Copyright 2003, Jason Wilkins.  This source code is free for any use except
- * that this copyright notice and the following disclaimers remain intact when
- * the source is distributed.  There are absolutely no restrictions on use of
- * object code generated from this source, but the disclaimers remain in force.
- *
- * THIS CODE WAS NOT MADE IN ASSOCIATION WITH NINTENDO AND DOES NOT MAKE USE OF
- * ANY INTELLECTUAL PROPERTY CLAIMED BY NINTENDO.
- *
- * GAMEBOY ADVANCE IS A TRADEMARK OF NINTENDO.
- *
- * THIS CODE HAS BEEN PROVIDED "AS-IS" WITHOUT A WARRANTY OF ANY KIND, EITHER
- * EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO IMPLIED WARRANTIES OF
- * MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  THE ENTIRE RISK AS TO THE
- * QUALITY OR PERFORMANCE OF THE CODE IS WITH YOU.
- *
- * IN NO EVENT, UNLESS AGREED TO IN WRITING, WILL ANY COPYRIGHT HOLDER, OR ANY
- * OTHER PARTY, BE HELD LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OR
- * INABILITY TO USE THIS CODE.
- *
- *****************************************************************************/
-/* @cond  INCLUDE_ASM */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-
-/*************************************************************************
-  The linker script MEMORY directive is not used here due to the fact
-  that  __ro_start is not always a fixed value.
- *************************************************************************
-MEMORY
-{
-  rom       : ORIGIN = 0x08000000 , LENGTH = 96M
-  iwram     : ORIGIN = 0x03000000 , LENGTH = 32K
-  ewram     : ORIGIN = 0x02000000 , LENGTH = 256K
-  sram      : ORIGIN = 0x0E000000 , LENGTH = 64K
-}
- *************************************************************************/
-__gba_ewram_start = 0x02000000;
-__gba_ewram_end   = 0x02040000;
-__gba_iwram_start = 0x03000000;
-__gba_iwram_end   = 0x03008000;
-__gba_rom_start   = 0x08000000;
-__gba_rom_end     = 0x0E000000;
-__gba_sram_start  = 0x0E000000;
-__gba_sram_end    = 0x0E010000;
-
-__sp_irq_size     = 0x2A0;
-_stack_size       = 0xA00;
-__irq_vector      = __gba_iwram_end - 0x0004; /* 0x03007FFC */
-__sp_svc          = __gba_iwram_end - 0x0020; /* 0x03007FE0 */
-__sp_irq          = __gba_iwram_end - 0x0060; /* 0x03007FA0 */
-__sp_usr          = __sp_irq - __sp_irq_size; /* 0x03007D00 */
-__sp_limit        = __sp_usr - _stack_size;   /* 0x03007300 */
-__heap_limit      = DEFINED(__gba_multiboot) ? __gba_ewram_end : ( DEFINED(__gba_iwram_bss) ? __sp_limit :  __gba_ewram_end ) ;
-
-
-SECTIONS
-{
-/*** read-only sections ***/
-/*************************************************************************
-  if 'multiboot' allocate prog in __gba_ewram_start (0x02000000-0x0207FFFF)
-  else allocate prog in __gba_rom_start (0x08000000-0x0DFFFFFF)
- *************************************************************************/
-  __ro_start = DEFINED(__gba_multiboot) ? __gba_ewram_start : __gba_rom_start ;
-  PROVIDE(__text_start__ = __ro_start );
-  .text  __ro_start :
-  {
-    CREATE_OBJECT_SYMBOLS
-    */start.o(.text)
-    *(EXCLUDE_FILE(*.rodata.* *.ewram.o *.iwram.o) .text)
-    *(.stub .text.* .gnu.linkonce.t*)
-
-    /*
-     * Special FreeBSD sysctl sections.
-     */
-    . = ALIGN (16);
-    __start_set_sysctl_set = .;
-    *(set_sysctl_*);
-    __stop_set_sysctl_set = ABSOLUTE(.);
-    *(set_domain_*);
-    *(set_pseudo_*);
-
-    /* .gnu.warning sections are handled specially by elf32.em. */
-    *(.gnu.warning)
-    *(.glue_7)
-    *(.glue_7t)
-    . = ALIGN(4);
-  } =0xFF
-
-  .init :
-  {
-    *(.init)
-    . = ALIGN(4);
-  } =0xFF
-
-  .fini :
-  {
-    *(.fini)
-    . = ALIGN(4);
-  } =0xFF
-
-  __rodata_start = . ;
-  .rodata :
-  {
-    *(.rodata1)
-    *(EXCLUDE_FILE(*.rodata.* *.ewram.o *.iwram.o) .rodata)
-    *(.rodata.* .gnu.linkonce.r*)
-    KEEP (*(SORT(.rtemsroset.*)))
-    *(.roda) /* deprecated: for compatibility with objcopyroda */
-    SORT(CONSTRUCTORS)
-    . = ALIGN(4);
-  } =0xFF
-  .tdata : {
-    _TLS_Data_begin = .;
-    *(.tdata .tdata.* .gnu.linkonce.td.*)
-    _TLS_Data_end = .;
-  } =0xFF
-  .tbss : {
-    _TLS_BSS_begin = .;
-    *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
-    _TLS_BSS_end = .;
-  }
-  _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
-  _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
-  _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
-  _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
-  _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
-  _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
-  __rodata_end = . ;
-
-  .eh_frame :
-  {
-    KEEP(*(.eh_frame))
-    . = ALIGN(4);
-  } =0xFF
-
-  .gcc_except_table :
-  {
-    *(.gcc_except_table*)
-    . = ALIGN(4);
-  } =0xFF
-
-  .ctors :
-  {
-    /* gcc uses crtbegin.o to find the start of
-       the constructors, so we make sure it is first.
-       Because this is a wildcard, it doesn't matter
-       if the user does not actually link against crtbegin.o;
-       the linker won't look for a file to match a wildcard.
-       The wildcard also means that it doesn't matter which
-       directory crtbegin.o is in.
-     */
-    KEEP(*crtbegin.o(.ctors))
-    /* We don't want to include the .ctor section from
-       the crtend.o file until after the sorted ctors.
-       The .ctor section from the crtend file contains the
-       end of ctors marker and it must be last
-     */
-     KEEP(*(EXCLUDE_FILE (*crtend.o) .ctors))
-     KEEP(*(SORT(.ctors.*)))
-     KEEP(*(.ctors))
-    . = ALIGN(4);
-  } =0xFF
-
-  .dtors :
-  {
-    KEEP(*crtbegin.o(.dtors))
-    KEEP(*(EXCLUDE_FILE (*crtend.o ) .dtors))
-    KEEP(*(SORT(.dtors.*)))
-    KEEP(*(.dtors))
-    . = ALIGN(4);
-  } =0xFF
-
-  .jcr :
-  {
-    *(.jcr)
-    . = ALIGN(4);
-  } =0xFF
-
-  .ARM.extab : {
-    *(.ARM.extab* .gnu.linkonce.armextab.*)
-  } =0xff
-   __exidx_start = .;
-  .ARM.exidx : {
-    *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-  } =0xff
-   __exidx_end = .;
-  .preinit_array : {
-    PROVIDE_HIDDEN (__preinit_array_start = .);
-    KEEP (*(.preinit_array))
-    PROVIDE_HIDDEN (__preinit_array_end = .);
-  } =0xFF
-  .init_array : {
-     PROVIDE_HIDDEN (__init_array_start = .);
-     KEEP (*(SORT(.init_array.*)))
-     KEEP (*(.init_array))
-     PROVIDE_HIDDEN (__init_array_end = .);
-  } =0xFF
-  .fini_array : {
-    PROVIDE_HIDDEN (__fini_array_start = .);
-    KEEP (*(.fini_array))
-    KEEP (*(SORT(.fini_array.*)))
-    PROVIDE_HIDDEN (__fini_array_end = .);
-  } =0xFF
-
-/*************************************************************************
-  calculate __ro_end
- *************************************************************************/
-  __ro_end = .;
-  PROVIDE(__text_end__ = __ro_end );
-
-/*** IWRAM ***/
-/*************************************************************************
-  allocate iwram in __gba_iwram_start (0x03000000-0x03003FFF)
- *************************************************************************/
-  __load_start_iwram = __ro_end;
-  . = __gba_iwram_start ;
-  __iwram_start = . ;
-  PROVIDE(__iwram_start__ = . );
-  .iwram : AT(__load_start_iwram)
-  {
-    /* put irq_vector_table in stat of iwram  */
-    CREATE_OBJECT_SYMBOLS
-    _irq_vector_table = .;
-    PROVIDE(irq_vector_table = .);
-    . += 4;
-    . = ALIGN(16 * 4);
-    PROVIDE(irq_vector_table_end = .);
-    _irq_vector_table_end = .;
-    *(.iwram .iwram.*)
-    *.iwram.o (.text .rodata .data)
-    . = ALIGN(4);
-  } =0xFF
-  __iwram_end = . ;
-  PROVIDE(__iwram_end__ = . );
-  __load_stop_iwram = __load_start_iwram + SIZEOF(.iwram);
-
- _irq_vector_table_size = _irq_vector_table_end - _irq_vector_table;
- PROVIDE(_irq_max_vector = _irq_vector_table_size / 4 );
-
-
-/*** EWRAM ***/
-/*************************************************************************
-  if 'multiboot' allocate prog+ewram in __gba_ewram
-  else allocate only ewram in __gba_ewram_start
- *************************************************************************/
-  . = DEFINED(__gba_multiboot) ? __load_stop_iwram : __gba_ewram_start ;
-  __load_start_ewram = __load_stop_iwram;
-  __ewram_start = . ;
-  PROVIDE(__ewram_start__ = . );
-  .ewram : AT(__load_start_ewram)
-  {
-    *(.ewram .ewram.*)
-    *.ewram.o (.text .rodata .data)
-    . = ALIGN(4);
-  } =0xFF
-  __ewram_end = . ;
-  PROVIDE(__ewram_end__ = . );
-  __load_stop_ewram = __load_start_ewram + SIZEOF(.ewram) ;
-
-/*************************************************************************
-    if 'multiboot' allocate prog+ewram+data+bss in __gba_ewram
-    else if 'iwram_data' allocate data in __gba_iwram
-    else allocate data in __gba_ewram
- *************************************************************************/
-  . = DEFINED(__gba_multiboot) ? __load_stop_ewram : (DEFINED(__gba_iwram_data) ? __iwram_end : __ewram_end) ;
-  __load_start_data = __load_stop_ewram;
-  __data_start = . ;
-  PROVIDE(__data_start__ = . );
-  .data : AT(__load_start_data)
-  {
-    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
-    *(EXCLUDE_FILE(*.rodata.* *.ewram.o *.iwram.o) .data)
-    *(.data.* .gnu.linkonce.d.*)
-    *(.data1)
-    KEEP (*(SORT(.rtemsrwset.*)))
-    *(.sdata .sdata.* .gnu.linkonce.s.*)
-    . = ALIGN(4);
-  } =0xFF
-  __data_end = . ;
-  PROVIDE(__data_end__ = . );
-  __load_stop_data = __load_start_data + SIZEOF(.data);
-
-/*** BSS ***/
-/*************************************************************************
-    if 'multiboot' allocate prog+ewram+data+bss in __gba_ewram
-    else if 'iwram_data' and 'iwram_bss' allocate iwram+data+bss in __gba_iwram
-    else if !'iwram_data' and 'iwram_bss' allocate iwram+bss in __gba_iwram
-    else allocate data+ewram+bss in  __gba_ewram
- *************************************************************************/
-  . = DEFINED(__gba_multiboot) ? __load_stop_data : ( DEFINED(__gba_iwram_data) ? (DEFINED(__gba_iwram_bss) ? __data_end :  __ewram_end) : (DEFINED(__gba_iwram_bss) ? __iwram_end : __data_end) ) ;
-  __bss_start = . ;
-  PROVIDE(__bss_start__ = . );
-  .bss :
-  {
-    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
-    *(.tcommon)
-    *(.sbss .sbss.* .gnu.linkonce.sb.*)
-    *(.scommon)
-    *(.bss .bss.* .gnu.linkonce.b*)
-    *(COMMON)
-    . = ALIGN(4);
-  }
-  __bss_end = . ;
-  PROVIDE(__bss_end__ = . );
-  PROVIDE(_bss_end__ = . );
-
-  PROVIDE(_end = . );
-  PROVIDE(__end__ = _end);
-  PROVIDE(end = _end);
-
-
-/*** debugging info ***/
-  /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  /* DWARF debug sections.
-   Symbols in the DWARF debugging sections are relative to the beginning
-   of the section so we begin them at 0.  */
-  /* DWARF 1 */
-  .debug          0 : { *(.debug) }
-  .line           0 : { *(.line) }
-  /* GNU DWARF 1 extensions */
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  /* DWARF 1.1 and DWARF 2 */
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  /* DWARF 2 */
-  .debug_info     0 : { *(.debug_info) }
-  .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
-  .debug_frame    0 : { *(.debug_frame) }
-  .debug_str      0 : { *(.debug_str) }
-  .debug_loc      0 : { *(.debug_loc) }
-  .debug_macinfo  0 : { *(.debug_macinfo) }
-  .comment        0 : { *(.comment) }
-  /* SGI/MIPS DWARF 2 extensions */
-  .debug_weaknames 0 : { *(.debug_weaknames) }
-  .debug_funcnames 0 : { *(.debug_funcnames) }
-  .debug_typenames 0 : { *(.debug_typenames) }
-  .debug_varnames  0 : { *(.debug_varnames) }
-  /* DWARF 3 */
-  .debug_pubtypes 0 : { *(.debug_pubtypes) }
-  .debug_ranges   0 : { *(.debug_ranges) }
-  /* DWARF extension */
-  .debug_macro    0 : { *(.debug_macro) }
-  .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
-  .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
-  /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
-}
-/* @endcond */
diff --git a/c/src/lib/libbsp/arm/gba/timer/timer.c b/c/src/lib/libbsp/arm/gba/timer/timer.c
deleted file mode 100644
index 9aad103..0000000
--- a/c/src/lib/libbsp/arm/gba/timer/timer.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- *  @file timer.c
- *
- *  GBA Timer driver.
- */
-/*
- *  RTEMS GBA BSP
- *
- *  Copyright (c) 2002 by Jay Monkman <jtm at smoothsmoothie.com>
- *
- *  Copyright (c) 2004  Markku Puro <markku.puro at kopteri.net>
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- *
- *
- * Notes:
- *  This file manages the benchmark timer used by the RTEMS Timing Test
- *  Suite.  Each measured time period is demarcated by calls to
- *  benchmark_timer_initialize() and benchmark_timer_read().  benchmark_timer_read() usually returns
- *  the number of microseconds since benchmark_timer_initialize() exitted.
- *
- *  It is important that the timer start/stop overhead be determined
- *  when porting or modifying this code.
- */
-
-#include <rtems.h>
-#include <bsp.h>
-#include <rtems/btimer.h>
-#include <bsp/irq.h>
-#include <gba.h>
-
-/*
- * Set up the timer hardware
- *    1 / 16.78Mhz  => 59.595 ns
- *   64 / 16.78Mhz  =>  3.814 us
- *  256 / 16.78Mhz  => 15.256 us
- * 1024 / 16.78Mhz  => 61.025 us
- */
-#define  __TimePreScaler      1
-#define  __TickTime_ns        ((1000000000L/__ClockFrequency)*__TimePreScaler)
-#define  __TickTime_us        ((1000000L/__ClockFrequency)*__TimePreScaler)
-
-#if (__TimePreScaler==1)
- #define GBA_TM0CNT_PS    0x0000
-#elif (__TimePreScaler==64)
- #define GBA_TM0CNT_PS    0x0001
-#elif (__TimePreScaler==256)
- #define GBA_TM0CNT_PS    0x0002
-#elif (__TimePreScaler==1024)
- #define GBA_TM0CNT_PS    0x0003
-#else
- #define GBA_TM0CNT_PS    0x0003
-#endif
-
-bool benchmark_timer_find_average_overhead;
-
-/**
- *  @brief benchmark_timer_initialize start TM0 and TM1
- *
- *  @param  None
- *  @return None
- */
-void benchmark_timer_initialize( void )
-{
-  GBA_REG_TM1CNT =  0x0000;                /* Stop Counters         */
-  GBA_REG_TM0CNT =  0x0000;
-  GBA_REG_TM1D   =  0x0000;                /* Reset Counters        */
-  GBA_REG_TM0D   =  0x0000;
-  /* Start Counters */
-  GBA_REG_TM1CNT =  0x0084;                /* Start Count Up timing */
-  GBA_REG_TM0CNT = (0x0080|GBA_TM0CNT_PS); /* Start Count           */
-}
-
-/*
- *  The following controls the behavior of benchmark_timer_read().
- *
- *  AVG_OVEREHAD is the overhead for starting and stopping the timer.  It
- *  is usually deducted from the number returned.
- *
- *  LEAST_VALID is the lowest number this routine should trust.  Numbers
- *  below this are "noise" and zero is returned.
- */
-
-#define AVG_OVERHEAD    3  /**< It typically takes 3 microseconds          */
-#define LEAST_VALID     1  /**< Don't trust a clicks value lower than this */
-
-/**
- *  @brief benchmark_timer_read return timer countervalue in microseconds.
- *
- *  Used in Timing Test Suite.
- *
- *  @param  None
- *  @return Timer value in microseconds
- */
-benchmark_timer_t benchmark_timer_read( void )
-{
-  uint32_t  ticks;
-  uint32_t  total;
-
-  /* Stop Counters */
-  GBA_REG_TM0CNT =  0x0000;
-  GBA_REG_TM1CNT =  0x0000;
-  /* Read Counters */
-  ticks = (GBA_REG_TM1D<<16) | GBA_REG_TM0D;
-  if ( ticks < LEAST_VALID ) {
-      return 0;  /* below timer resolution */
-  }
-  /* convert to uS */
-  total = ((ticks * __TickTime_ns) / 1000);
-  if ( benchmark_timer_find_average_overhead == true ) {
-      return total;          /* in microseconds */
-  }
-  else {
-    if ( total < AVG_OVERHEAD ) {
-        return 0;
-    }
-    return (total - AVG_OVERHEAD);
-  }
-}
-
-/**
- *  @brief Set benchmark_timer_find_average_overhead flag.
- *
- *  Used in Timing Test Suite.
- *
- *  @param  find_flag bool find_flag
- *  @return None
-*/
-void benchmark_timer_disable_subtracting_average_overhead(bool find_flag)
-{
-   benchmark_timer_find_average_overhead = find_flag;
-}
-- 
2.1.4


This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited.                          



More information about the devel mailing list