[rtems commit] arm/gba: Remove

Gedare Bloom gedare at rtems.org
Sun Dec 13 01:21:49 UTC 2015


Module:    rtems
Branch:    master
Commit:    c8a8a6013fc3c02ae58eb343afec00a5954952e5
Changeset: http://git.rtems.org/rtems/commit/?id=c8a8a6013fc3c02ae58eb343afec00a5954952e5

Author:    Aun-Ali Zaidi <admin at kodeit.net>
Date:      Fri Dec 11 17:21:26 2015 -0600

arm/gba: Remove

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(-)

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;
-}



More information about the vc mailing list