forked from Imagelibrary/rtems
2005-03-11 Philippe Simons <loki_666@fastmail.fm>
* acinclude.m4: Added gp32 BSP. * gp32/.cvsignore, gp32/Makefile.am, gp32/README, gp32/bsp_specs, gp32/configure.ac, gp32/console/.cvsignore, gp32/console/conio.c, gp32/console/console.c, gp32/console/defaultfont.c, gp32/include/.cvsignore, gp32/include/bsp.h, gp32/include/conio.h, gp32/include/tm27.h, gp32/start/.cvsignore, gp32/start/start.S, gp32/startup/.cvsignore, gp32/startup/bspstart.c, gp32/startup/exit.c, gp32/startup/linkcmds, gp32/startup/memmap.c: New files.
This commit is contained in:
@@ -1,3 +1,14 @@
|
|||||||
|
2005-03-11 Philippe Simons <loki_666@fastmail.fm>
|
||||||
|
|
||||||
|
* acinclude.m4: Added gp32 BSP.
|
||||||
|
* gp32/.cvsignore, gp32/Makefile.am, gp32/README, gp32/bsp_specs,
|
||||||
|
gp32/configure.ac, gp32/console/.cvsignore, gp32/console/conio.c,
|
||||||
|
gp32/console/console.c, gp32/console/defaultfont.c,
|
||||||
|
gp32/include/.cvsignore, gp32/include/bsp.h, gp32/include/conio.h,
|
||||||
|
gp32/include/tm27.h, gp32/start/.cvsignore, gp32/start/start.S,
|
||||||
|
gp32/startup/.cvsignore, gp32/startup/bspstart.c,
|
||||||
|
gp32/startup/exit.c, gp32/startup/linkcmds, gp32/startup/memmap.c: New files.
|
||||||
|
|
||||||
2005-03-03 Ralf Corsepius <ralf.corsepius@rtems.org>
|
2005-03-03 Ralf Corsepius <ralf.corsepius@rtems.org>
|
||||||
|
|
||||||
* acinclude.m4: Remove arm_bare_bsp.
|
* acinclude.m4: Remove arm_bare_bsp.
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ AC_DEFUN([RTEMS_CHECK_BSPDIR],
|
|||||||
AC_CONFIG_SUBDIRS([csb337]);;
|
AC_CONFIG_SUBDIRS([csb337]);;
|
||||||
edb7312 )
|
edb7312 )
|
||||||
AC_CONFIG_SUBDIRS([edb7312]);;
|
AC_CONFIG_SUBDIRS([edb7312]);;
|
||||||
|
gp32 )
|
||||||
|
AC_CONFIG_SUBDIRS([gp32]);;
|
||||||
vegaplus )
|
vegaplus )
|
||||||
AC_CONFIG_SUBDIRS([vegaplus]);;
|
AC_CONFIG_SUBDIRS([vegaplus]);;
|
||||||
*)
|
*)
|
||||||
|
|||||||
14
c/src/lib/libbsp/arm/gp32/.cvsignore
Normal file
14
c/src/lib/libbsp/arm/gp32/.cvsignore
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
aclocal.m4
|
||||||
|
autom4te.cache
|
||||||
|
config.cache
|
||||||
|
config.guess
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
depcomp
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
mkinstalldirs
|
||||||
103
c/src/lib/libbsp/arm/gp32/Makefile.am
Normal file
103
c/src/lib/libbsp/arm/gp32/Makefile.am
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
##
|
||||||
|
## $Id$
|
||||||
|
##
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I ../../../../aclocal
|
||||||
|
|
||||||
|
include $(top_srcdir)/../../../../automake/compile.am
|
||||||
|
include $(top_srcdir)/../../bsp.am
|
||||||
|
|
||||||
|
dist_project_lib_DATA = bsp_specs
|
||||||
|
|
||||||
|
include_HEADERS = include/bsp.h
|
||||||
|
include_HEADERS += include/conio.h
|
||||||
|
include_HEADERS += include/tm27.h
|
||||||
|
|
||||||
|
nodist_include_HEADERS = include/bspopts.h
|
||||||
|
DISTCLEANFILES = include/bspopts.h
|
||||||
|
|
||||||
|
noinst_PROGRAMS =
|
||||||
|
|
||||||
|
nodist_include_HEADERS += ../../shared/include/coverhd.h
|
||||||
|
|
||||||
|
EXTRA_DIST = start/start.S
|
||||||
|
start.$(OBJEXT): start/start.S
|
||||||
|
$(CPPASCOMPILE) -DASM -o $@ -c $<
|
||||||
|
project_lib_DATA = start.$(OBJEXT)
|
||||||
|
|
||||||
|
dist_project_lib_DATA += startup/linkcmds
|
||||||
|
|
||||||
|
noinst_PROGRAMS += startup.rel
|
||||||
|
startup_rel_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \
|
||||||
|
startup/bspstart.c startup/exit.c startup/memmap.c \
|
||||||
|
../../shared/bootcard.c ../../shared/main.c ../../shared/sbrk.c \
|
||||||
|
../../shared/gnatinstallhandler.c
|
||||||
|
startup_rel_CPPFLAGS = $(AM_CPPFLAGS)
|
||||||
|
startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||||
|
|
||||||
|
noinst_PROGRAMS += console.rel
|
||||||
|
console_rel_SOURCES = console/conio.c console/defaultfont.c console/console.c
|
||||||
|
console_rel_CPPFLAGS = $(AM_CPPFLAGS)
|
||||||
|
console_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||||
|
|
||||||
|
noinst_LIBRARIES = libbsp.a
|
||||||
|
libbsp_a_SOURCES =
|
||||||
|
libbsp_a_LIBADD = startup.rel console.rel
|
||||||
|
libbsp_a_LIBADD += ../../../libcpu/@RTEMS_CPU@/shared/arm920.rel \
|
||||||
|
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/clock.rel \
|
||||||
|
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/timer.rel \
|
||||||
|
../../../libcpu/@RTEMS_CPU@/@RTEMS_CPU_MODEL@/irq.rel
|
||||||
|
|
||||||
|
all-local: $(PREINSTALL_FILES) $(TMPINSTALL_FILES)
|
||||||
|
|
||||||
|
PREINSTALL_DIRS =
|
||||||
|
PREINSTALL_FILES =
|
||||||
|
TMPINSTALL_FILES =
|
||||||
|
|
||||||
|
$(PROJECT_INCLUDE)/$(dirstamp):
|
||||||
|
@$(mkdir_p) $(PROJECT_INCLUDE)
|
||||||
|
@: > $(PROJECT_INCLUDE)/$(dirstamp)
|
||||||
|
PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
|
||||||
|
|
||||||
|
$(PROJECT_LIB)/$(dirstamp):
|
||||||
|
@$(mkdir_p) $(PROJECT_LIB)
|
||||||
|
@: > $(PROJECT_LIB)/$(dirstamp)
|
||||||
|
PREINSTALL_DIRS += $(PROJECT_LIB)/$(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)/conio.h: include/conio.h $(PROJECT_INCLUDE)/$(dirstamp)
|
||||||
|
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/conio.h
|
||||||
|
PREINSTALL_FILES += $(PROJECT_INCLUDE)/conio.h
|
||||||
|
|
||||||
|
$(PROJECT_INCLUDE)/tm27.h: include/tm27.h $(PROJECT_INCLUDE)/$(dirstamp)
|
||||||
|
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tm27.h
|
||||||
|
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tm27.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_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
|
||||||
|
|
||||||
|
CLEANFILES = $(PREINSTALL_FILES)
|
||||||
|
DISTCLEANFILES += $(PREINSTALL_DIRS)
|
||||||
|
CLEANFILES += $(TMPINSTALL_FILES)
|
||||||
|
|
||||||
|
include $(top_srcdir)/../../../../automake/local.am
|
||||||
3
c/src/lib/libbsp/arm/gp32/README
Normal file
3
c/src/lib/libbsp/arm/gp32/README
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
This is the BSP for GamePark's GP32, a single board
|
||||||
|
computer using the Samsung S3C2400 SoC CPU.
|
||||||
|
|
||||||
23
c/src/lib/libbsp/arm/gp32/bsp_specs
Normal file
23
c/src/lib/libbsp/arm/gp32/bsp_specs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
%rename cpp old_cpp
|
||||||
|
%rename lib old_lib
|
||||||
|
%rename endfile old_endfile
|
||||||
|
%rename startfile old_startfile
|
||||||
|
%rename link old_link
|
||||||
|
|
||||||
|
*cpp:
|
||||||
|
%(old_cpp) %{qrtems: -D__embedded__ -DUSE_ENHANCED_INTR_API} -Asystem(embedded)
|
||||||
|
|
||||||
|
*lib:
|
||||||
|
%{!qrtems: %(old_lib)} %{qrtems: --start-group \
|
||||||
|
%{!qrtems_debug: -lrtemsbsp -lrtemscpu} %{qrtems_debug: -lrtemsbsp_g -lrtemscpu_g} \
|
||||||
|
-lc -lgcc --end-group \
|
||||||
|
%{!qnolinkcmds: -T linkcmds%s}}
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
%{!qrtems: %(old_startfile)} %{qrtems: \
|
||||||
|
%{!qrtems_debug: start.o%s crtbegin.o%s} \
|
||||||
|
%{qrtems_debug: start_g.o%s crtbegin.o%s}}
|
||||||
|
|
||||||
|
*link:
|
||||||
|
%{!qrtems: %(old_link)} %{qrtems: -Qy -dp -Bstatic -N -e _start}
|
||||||
|
|
||||||
24
c/src/lib/libbsp/arm/gp32/configure.ac
Normal file
24
c/src/lib/libbsp/arm/gp32/configure.ac
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
## Process this file with autoconf to produce a configure script.
|
||||||
|
##
|
||||||
|
## configure.ac,v 1.5 2003/03/11 09:39:07 ralf Exp
|
||||||
|
|
||||||
|
AC_PREREQ(2.57)
|
||||||
|
AC_INIT([rtems-c-src-lib-libbsp-arm-gp32],[_RTEMS_VERSION],[rtems-bugs@OARcorp.com])
|
||||||
|
AC_CONFIG_SRCDIR([bsp_specs])
|
||||||
|
RTEMS_TOP(../../../../../..)
|
||||||
|
|
||||||
|
RTEMS_CANONICAL_TARGET_CPU
|
||||||
|
AM_INIT_AUTOMAKE([no-define foreign 1.9])
|
||||||
|
RTEMS_BSP_CONFIGURE
|
||||||
|
|
||||||
|
RTEMS_PROG_CC_FOR_TARGET([-ansi -fasm])
|
||||||
|
RTEMS_CANONICALIZE_TOOLS
|
||||||
|
RTEMS_PROG_CCAS
|
||||||
|
|
||||||
|
RTEMS_CHECK_NETWORKING
|
||||||
|
AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes")
|
||||||
|
|
||||||
|
# Explicitly list all Makefiles here
|
||||||
|
AC_CONFIG_FILES([Makefile])
|
||||||
|
AC_OUTPUT
|
||||||
|
|
||||||
14
c/src/lib/libbsp/arm/gp32/console/.cvsignore
Normal file
14
c/src/lib/libbsp/arm/gp32/console/.cvsignore
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
aclocal.m4
|
||||||
|
autom4te.cache
|
||||||
|
config.cache
|
||||||
|
config.guess
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
depcomp
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
mkinstalldirs
|
||||||
357
c/src/lib/libbsp/arm/gp32/console/conio.c
Normal file
357
c/src/lib/libbsp/arm/gp32/console/conio.c
Normal file
@@ -0,0 +1,357 @@
|
|||||||
|
/*
|
||||||
|
* conio.c : ARM GBA BSP
|
||||||
|
*
|
||||||
|
* This file contains the GBA conio I/O package.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
|
||||||
|
*
|
||||||
|
* This source file is based on work by Rafael Vuijk (aka Dark Fader)
|
||||||
|
* MyLib by Rafael Vuijk (aka Dark Fader)
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in found in the file LICENSE in this distribution or at
|
||||||
|
* http://www.rtems.com/license/LICENSE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* Includes *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <rtems/score/types.h>
|
||||||
|
#include <s3c2400.h>
|
||||||
|
#include <conio.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#define gp_initButtons() {rPBCON=0x0;}
|
||||||
|
#define gp_getButtons() ((((~rPEDAT >> 6) & 0x3) << 8) | \
|
||||||
|
((~rPBDAT >> 8) & 0xFF))
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* Defines *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#define LCD_WIDTH 240
|
||||||
|
#define LCD_HEIGHT 320
|
||||||
|
#define DEFAULT_FONT_WIDTH 4
|
||||||
|
#define DEFAULT_FONT_HEIGHT 6
|
||||||
|
#define W (LCD_WIDTH/DEFAULT_FONT_WIDTH)
|
||||||
|
#define H (LCD_HEIGHT/DEFAULT_FONT_HEIGHT)
|
||||||
|
|
||||||
|
typedef unsigned char Bitmap[LCD_HEIGHT][LCD_WIDTH];
|
||||||
|
#define GP32_VRAM 0x0c7b4000
|
||||||
|
#define bg_bitmap (*(Bitmap *)GP32_VRAM)
|
||||||
|
|
||||||
|
/* color conversion */
|
||||||
|
#define RGB(r,g,b) ( (r)<<11 | (g)<<6 | (b)<<1 )
|
||||||
|
|
||||||
|
int _wherex;
|
||||||
|
int _wherey;
|
||||||
|
int _textattr;
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* Defaultfont *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include "defaultfont.c"
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_gotoxy *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void gpconio_gotoxy(int _x, int _y)
|
||||||
|
{
|
||||||
|
_wherex = _x;
|
||||||
|
_wherey = _y;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* PutChar *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void 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_bitmap[((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 += LCD_WIDTH / sizeof(uint32_t);
|
||||||
|
|
||||||
|
s = *src++;
|
||||||
|
*dest = (fmask&s) | (bmask&~s);
|
||||||
|
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||||
|
|
||||||
|
s = *src++;
|
||||||
|
*dest = (fmask&s) | (bmask&~s);
|
||||||
|
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||||
|
|
||||||
|
s = *src++;
|
||||||
|
*dest = (fmask&s) | (bmask&~s);
|
||||||
|
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||||
|
|
||||||
|
s = *src++;
|
||||||
|
*dest = (fmask&s) | (bmask&~s);
|
||||||
|
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||||
|
|
||||||
|
s = *src++;
|
||||||
|
*dest = (fmask&s) | (bmask&~s);
|
||||||
|
dest += LCD_WIDTH / sizeof(uint32_t);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_textattr *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void gpconio_textattr(int _attr)
|
||||||
|
{
|
||||||
|
_textattr = _attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_textbackground *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void gpconio_textbackground(int _color)
|
||||||
|
{
|
||||||
|
_textattr = (_textattr & 0x0F) | (_color << 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_textcolor *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void gpconio_textcolor(int _color)
|
||||||
|
{
|
||||||
|
_textattr = (_textattr & 0xF0) | (_color);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* ClrLine *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void ClrLine(int y)
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
|
||||||
|
for(x=0 ; x<=W ; x++) PutChar(0, _textattr, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* NextLine *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void NextLine()
|
||||||
|
{
|
||||||
|
_wherex = 0;
|
||||||
|
|
||||||
|
if (++_wherey >= H) {
|
||||||
|
_wherey = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ClrLine(_wherey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* clrscr *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void gpconio_clrscr()
|
||||||
|
{
|
||||||
|
int y;
|
||||||
|
|
||||||
|
for(y=0 ; y<=H ; y++) {
|
||||||
|
ClrLine(y);
|
||||||
|
}
|
||||||
|
|
||||||
|
gpconio_gotoxy(0,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_put *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void gpconio_put(char _c)
|
||||||
|
{
|
||||||
|
/* We have save some memory with fonts */
|
||||||
|
_c = _c & 0x7F; /* no extened chars */
|
||||||
|
_c = _c - 0x20; /* no cntr chars */
|
||||||
|
PutChar(_c, _textattr, _wherex, _wherey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_putch *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void gpconio_putch(char _c)
|
||||||
|
{
|
||||||
|
switch (_c) {
|
||||||
|
case ASCII_LF:
|
||||||
|
NextLine();
|
||||||
|
break;
|
||||||
|
case ASCII_CR:
|
||||||
|
gpconio_gotoxy(0, _wherey);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gpconio_put(_c);
|
||||||
|
if (++_wherex >= W) {
|
||||||
|
NextLine();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_puts *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void gpconio_puts(const char *_str)
|
||||||
|
{
|
||||||
|
while (*_str) {
|
||||||
|
gpconio_putch(*_str++);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_printf *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
int gpconio_printf(const char *_format, ...)
|
||||||
|
{
|
||||||
|
char s[256];
|
||||||
|
va_list marker;
|
||||||
|
va_start(marker, _format);
|
||||||
|
int r = vsprintf(s, _format, marker);
|
||||||
|
|
||||||
|
va_end(marker);
|
||||||
|
gpconio_puts(s);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* InitConIO *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void InitConIO()
|
||||||
|
{
|
||||||
|
uint32_t GPHCLK = 66750000;
|
||||||
|
unsigned short BPPMODE = 11;
|
||||||
|
unsigned short CLKVAL = (GPHCLK/(83385*2*60))-1;
|
||||||
|
uint32_t LCDBANK = GP32_VRAM >> 22;
|
||||||
|
uint32_t LCDBASEU = (GP32_VRAM & 0x3FFFFF) >> 1;
|
||||||
|
uint32_t LCDBASEL;
|
||||||
|
unsigned short OFFSIZE = 0;
|
||||||
|
unsigned short PAGEWIDTH;
|
||||||
|
|
||||||
|
rLCDCON1 = (CLKVAL<<8) | (0<<7) | (3<<5) | (BPPMODE<<1) | (1<<0) ;
|
||||||
|
rLCDCON2 = 0;
|
||||||
|
rLCDCON2 = (1<<24) | (319<<14) | (2<<6) | (1<<0) ;
|
||||||
|
rLCDCON3 = 0;
|
||||||
|
rLCDCON3 = (6<<19) | (239<<8) | (2<<0) ;
|
||||||
|
rLCDCON4 = 0;
|
||||||
|
rLCDCON4 = (0<<24) | (0<<16) | (0<<8) | (4<<0) ;
|
||||||
|
rLCDCON5 = 0;
|
||||||
|
rLCDCON5 = ((1<<10) | (1<<9) | (1<<8) | (0<<7) |
|
||||||
|
(0<<6) | (0<<4) | (0<<2) | (1<<1) | (0<<0)) ;
|
||||||
|
|
||||||
|
LCDBASEL = LCDBASEU + 320*120;
|
||||||
|
PAGEWIDTH = 120;
|
||||||
|
|
||||||
|
rLCDSADDR1 = (LCDBANK<<21) | (LCDBASEU<<0) ;
|
||||||
|
rLCDSADDR2 = (LCDBASEL<<0) ;
|
||||||
|
rLCDSADDR3 = (OFFSIZE<<11) | (PAGEWIDTH<<0) ;
|
||||||
|
|
||||||
|
gp_initButtons();
|
||||||
|
gpconio_textattr(0);
|
||||||
|
gpconio_textcolor(DEF_TEXTCOLOR);
|
||||||
|
gpconio_textbackground(DEF_TEXTBACKGROUND);
|
||||||
|
gpconio_clrscr();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void delay_loop(unsigned int count)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 0; i < count; i++) {
|
||||||
|
i = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* gp32_getch *
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static unsigned char inputch = ASCII_CR;
|
||||||
|
char gpconio_getch(void)
|
||||||
|
{
|
||||||
|
int keyx;
|
||||||
|
int key = 0;
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
key = gp_getButtons();
|
||||||
|
|
||||||
|
do {
|
||||||
|
keyx = gp_getButtons();
|
||||||
|
} while (keyx == key);
|
||||||
|
|
||||||
|
switch (key) {
|
||||||
|
case GP32_KEY_SELECT:
|
||||||
|
gpconio_put(inputch);
|
||||||
|
return inputch;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_START:
|
||||||
|
gpconio_put(' ');
|
||||||
|
inputch = ASCII_CR;
|
||||||
|
return inputch;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_A:
|
||||||
|
inputch = 'A';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_B:
|
||||||
|
inputch = 'Z';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_UP:
|
||||||
|
if ((inputch-1) >= 0x20) {
|
||||||
|
inputch--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_DOWN:
|
||||||
|
if ((inputch+1) <= 0x7E) {
|
||||||
|
inputch++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_LEFT:
|
||||||
|
if ((inputch - 0x20) >= 0x20) {
|
||||||
|
inputch -= 0x20;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_RIGHT:
|
||||||
|
if ((inputch + 0x20) <= 0x7E) {
|
||||||
|
inputch += 0x20;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_R:
|
||||||
|
inputch = '1';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GP32_KEY_L:
|
||||||
|
inputch = '9';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
gpconio_put(inputch);
|
||||||
|
delay_loop(10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
176
c/src/lib/libbsp/arm/gp32/console/console.c
Normal file
176
c/src/lib/libbsp/arm/gp32/console/console.c
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
/*
|
||||||
|
* console.c : ARM GBA BSP
|
||||||
|
*
|
||||||
|
* This file contains the GBA console I/O package.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in found in the file LICENSE in this distribution or at
|
||||||
|
* http://www.rtems.com/license/LICENSE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <bsp.h>
|
||||||
|
#include <rtems/bspIo.h>
|
||||||
|
#include <rtems/libio.h>
|
||||||
|
#include <rtems/termiostypes.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <irq.h>
|
||||||
|
#include <s3c2400.h>
|
||||||
|
#include <conio.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BSP initialization
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int gp32_pollRead(int minor)
|
||||||
|
{
|
||||||
|
return(gpconio_getch());
|
||||||
|
}
|
||||||
|
|
||||||
|
static int gp32_write(int minor, const char *buf, int len)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for(i = 0; i < len; i++) {
|
||||||
|
gpconio_putch((unsigned short)buf[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* for printk support */
|
||||||
|
BSP_output_char_function_type BSP_output_char = (BSP_output_char_function_type) gpconio_putch;
|
||||||
|
BSP_polling_getchar_function_type BSP_poll_char = (BSP_polling_getchar_function_type) gpconio_getch;
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| Console device driver INITIALIZE entry point.
|
||||||
|
+--------------------------------------------------------------------------+
|
||||||
|
| Initilizes the I/O console (keyboard + VGA display) driver.
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
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
|
||||||
|
*/
|
||||||
|
InitConIO();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
return RTEMS_SUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| Console device driver OPEN entry point
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
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 =
|
||||||
|
{
|
||||||
|
NULL, /* firstOpen */
|
||||||
|
NULL, /* lastClose */
|
||||||
|
gp32_pollRead, /* pollRead */
|
||||||
|
gp32_write, /* write */
|
||||||
|
NULL, /* 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| Console device driver CLOSE entry point
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| Console device driver READ entry point.
|
||||||
|
+--------------------------------------------------------------------------+
|
||||||
|
| Read characters from the I/O console. We only have stdin.
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
rtems_device_driver
|
||||||
|
console_read(rtems_device_major_number major,
|
||||||
|
rtems_device_minor_number minor,
|
||||||
|
void *arg)
|
||||||
|
{
|
||||||
|
return rtems_termios_read (arg);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| Console device driver WRITE entry point.
|
||||||
|
+--------------------------------------------------------------------------+
|
||||||
|
| Write characters to the I/O console. Stderr and stdout are the same.
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
rtems_device_driver
|
||||||
|
console_write(rtems_device_major_number major,
|
||||||
|
rtems_device_minor_number minor,
|
||||||
|
void * arg)
|
||||||
|
{
|
||||||
|
return rtems_termios_write (arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handle ioctl request.
|
||||||
|
*/
|
||||||
|
rtems_device_driver
|
||||||
|
console_control(rtems_device_major_number major,
|
||||||
|
rtems_device_minor_number minor,
|
||||||
|
void * arg
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return rtems_termios_ioctl (arg);
|
||||||
|
}
|
||||||
600
c/src/lib/libbsp/arm/gp32/console/defaultfont.c
Normal file
600
c/src/lib/libbsp/arm/gp32/console/defaultfont.c
Normal file
@@ -0,0 +1,600 @@
|
|||||||
|
/*
|
||||||
|
* defaultfont.c : ARM GBA BSP
|
||||||
|
*
|
||||||
|
* This file contains default font definitions
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in found in the file LICENSE in this distribution or at
|
||||||
|
* http://www.rtems.com/license/LICENSE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define X 255
|
||||||
|
#define GEN_FONT_DATA(a,b,c,d) ( ((d) << 24) | \
|
||||||
|
((c) << 16) | \
|
||||||
|
((b) << 8) | \
|
||||||
|
((a) << 0) )
|
||||||
|
|
||||||
|
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 )
|
||||||
|
},{ /* '<27>' - 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 )
|
||||||
|
},{ /* '<27>' - 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 )
|
||||||
|
}
|
||||||
|
};
|
||||||
7
c/src/lib/libbsp/arm/gp32/include/.cvsignore
Normal file
7
c/src/lib/libbsp/arm/gp32/include/.cvsignore
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
coverhd.h
|
||||||
|
bspopts.h
|
||||||
|
bspopts.h.in
|
||||||
|
stamp-h
|
||||||
|
stamp-h.in
|
||||||
55
c/src/lib/libbsp/arm/gp32/include/bsp.h
Normal file
55
c/src/lib/libbsp/arm/gp32/include/bsp.h
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| bsp.h - ARM BSP
|
||||||
|
+--------------------------------------------------------------------------+
|
||||||
|
| This include file contains definitions related to the ARM BSP.
|
||||||
|
+--------------------------------------------------------------------------+
|
||||||
|
|
|
||||||
|
| Copyright (c) Canon Research France SA.]
|
||||||
|
| Emmanuel Raguet, mailto:raguet@crf.canon.fr
|
||||||
|
|
|
||||||
|
| The license and distribution terms for this file may be
|
||||||
|
| found in found in the file LICENSE in this distribution or at
|
||||||
|
| http://www.rtems.com/license/LICENSE.
|
||||||
|
|
|
||||||
|
| $Id$
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __BSP_H_
|
||||||
|
#define __BSP_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <bspopts.h>
|
||||||
|
|
||||||
|
#include <rtems.h>
|
||||||
|
#include <rtems/iosupp.h>
|
||||||
|
#include <rtems/console.h>
|
||||||
|
#include <rtems/clockdrv.h>
|
||||||
|
#include <s3c2400.h>
|
||||||
|
|
||||||
|
extern rtems_configuration_table BSP_Configuration;
|
||||||
|
|
||||||
|
void LCD_BREAK();
|
||||||
|
|
||||||
|
/* What is the input clock freq in hertz? */
|
||||||
|
#define BSP_OSC_FREQ 12000000 /* 12 MHz oscillator */
|
||||||
|
#define M_MDIV 81
|
||||||
|
#define M_PDIV 2
|
||||||
|
#define M_SDIV 1
|
||||||
|
|
||||||
|
/* How many serial ports? */
|
||||||
|
#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 1
|
||||||
|
|
||||||
|
/* How big should the interrupt stack be? */
|
||||||
|
#define CONFIGURE_INTERRUPT_STACK_MEMORY (16 * 1024)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __BSP_H_ */
|
||||||
|
/* end of include file */
|
||||||
|
|
||||||
79
c/src/lib/libbsp/arm/gp32/include/conio.h
Normal file
79
c/src/lib/libbsp/arm/gp32/include/conio.h
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* conio.h : ARM GP32 BSP
|
||||||
|
*
|
||||||
|
* This file contains the GP32 conio I/O package.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 Markku Puro <markku.puro@kopteri.net>
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in found in the file LICENSE in this distribution or at
|
||||||
|
* http://www.rtems.com/license/LICENSE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CONIO_H
|
||||||
|
#define _CONIO_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
* 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 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 gpconio_clrscr();
|
||||||
|
void gpconio_textattr(int _attr);
|
||||||
|
void gpconio_textbackground(int _color);
|
||||||
|
void gpconio_textcolor(int _color);
|
||||||
|
void gpconio_putch(char _c);
|
||||||
|
void gpconio_puts(const char *_str);
|
||||||
|
int gpconio_printf(const char *_format, ...);
|
||||||
|
void gpconio_gotoxy(int _x, int _y);
|
||||||
|
|
||||||
|
char gpconio_getch(void);
|
||||||
|
char gpconio_getch_noblock(void);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _CONIO_H
|
||||||
32
c/src/lib/libbsp/arm/gp32/include/tm27.h
Normal file
32
c/src/lib/libbsp/arm/gp32/include/tm27.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* tm27.h
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in the file LICENSE in this distribution or at
|
||||||
|
* http://www.rtems.com/license/LICENSE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _RTEMS_TMTEST27
|
||||||
|
#error "This is an RTEMS internal file you must not include directly."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __tm27_h
|
||||||
|
#define __tm27_h
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define the interrupt mechanism for Time Test 27
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MUST_WAIT_FOR_INTERRUPT 0
|
||||||
|
|
||||||
|
#define Install_tm27_vector( handler ) /* empty */
|
||||||
|
|
||||||
|
#define Cause_tm27_intr() /* empty */
|
||||||
|
|
||||||
|
#define Clear_tm27_intr() /* empty */
|
||||||
|
|
||||||
|
#define Lower_tm27_intr() /* empty */
|
||||||
|
|
||||||
|
#endif
|
||||||
14
c/src/lib/libbsp/arm/gp32/start/.cvsignore
Normal file
14
c/src/lib/libbsp/arm/gp32/start/.cvsignore
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
aclocal.m4
|
||||||
|
autom4te.cache
|
||||||
|
config.cache
|
||||||
|
config.guess
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
depcomp
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
mkinstalldirs
|
||||||
199
c/src/lib/libbsp/arm/gp32/start/start.S
Normal file
199
c/src/lib/libbsp/arm/gp32/start/start.S
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
/*
|
||||||
|
* GP32 startup code
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in the file LICENSE in this distribution or at
|
||||||
|
*
|
||||||
|
* http://www.OARcorp.com/rtems/license.html.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Some standard definitions...*/
|
||||||
|
.equ PSR_MODE_USR, 0x10
|
||||||
|
.equ PSR_MODE_FIQ, 0x11
|
||||||
|
.equ PSR_MODE_IRQ, 0x12
|
||||||
|
.equ PSR_MODE_SVC, 0x13
|
||||||
|
.equ PSR_MODE_ABT, 0x17
|
||||||
|
.equ PSR_MODE_UNDEF, 0x1B
|
||||||
|
.equ PSR_MODE_SYS, 0x1F
|
||||||
|
|
||||||
|
.equ PSR_I, 0x80
|
||||||
|
.equ PSR_F, 0x40
|
||||||
|
.equ PSR_T, 0x20
|
||||||
|
|
||||||
|
.text
|
||||||
|
.globl _start
|
||||||
|
_start:
|
||||||
|
b _start2
|
||||||
|
|
||||||
|
@---------------------------------------------------------------------------------
|
||||||
|
@ AXF addresses
|
||||||
|
@---------------------------------------------------------------------------------
|
||||||
|
.word _axf_text_start
|
||||||
|
.word _axf_ro_end
|
||||||
|
.word _axf_data_start
|
||||||
|
.word _axf_bss_end
|
||||||
|
.word _axf_bss_start
|
||||||
|
.word _axf_bss_end
|
||||||
|
|
||||||
|
@---------------------------------------------------------------------------------
|
||||||
|
@ GamePark magic sequence
|
||||||
|
@---------------------------------------------------------------------------------
|
||||||
|
.word 0x44450011
|
||||||
|
.word 0x44450011
|
||||||
|
.word 0x01234567
|
||||||
|
.word 0x12345678
|
||||||
|
.word 0x23456789
|
||||||
|
.word 0x34567890
|
||||||
|
.word 0x45678901
|
||||||
|
.word 0x56789012
|
||||||
|
.word 0x23456789
|
||||||
|
.word 0x34567890
|
||||||
|
.word 0x45678901
|
||||||
|
.word 0x56789012
|
||||||
|
.word 0x23456789
|
||||||
|
.word 0x34567890
|
||||||
|
.word 0x45678901
|
||||||
|
.word 0x56789012
|
||||||
|
|
||||||
|
@---------------------------------------------------------------------------------
|
||||||
|
_start2:
|
||||||
|
@---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Since I don't plan to return to the bootloader,
|
||||||
|
* I don't have to save the registers.
|
||||||
|
*
|
||||||
|
* I'll just set the CPSR for SVC mode, interrupts
|
||||||
|
* off, and ARM instructions.
|
||||||
|
*/
|
||||||
|
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F)
|
||||||
|
msr cpsr, r0
|
||||||
|
|
||||||
|
/* --- Initialize stack pointer registers */
|
||||||
|
/* Enter IRQ mode and set up the IRQ stack pointer */
|
||||||
|
mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F) /* No interrupts */
|
||||||
|
msr cpsr, r0
|
||||||
|
ldr r1, =_irq_stack_size
|
||||||
|
ldr sp, =_irq_stack
|
||||||
|
add sp, sp, r1
|
||||||
|
|
||||||
|
/* Enter FIQ mode and set up the FIQ stack pointer */
|
||||||
|
mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F) /* No interrupts */
|
||||||
|
msr cpsr, r0
|
||||||
|
ldr r1, =_fiq_stack_size
|
||||||
|
ldr sp, =_fiq_stack
|
||||||
|
add sp, sp, r1
|
||||||
|
|
||||||
|
/* Enter ABT mode and set up the ABT stack pointer */
|
||||||
|
mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F) /* No interrupts */
|
||||||
|
msr cpsr, r0
|
||||||
|
ldr r1, =_abt_stack_size
|
||||||
|
ldr sp, =_abt_stack
|
||||||
|
add sp, sp, r1
|
||||||
|
|
||||||
|
/* Set up the SVC stack pointer last and stay in SVC mode */
|
||||||
|
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F) /* No interrupts */
|
||||||
|
msr cpsr, r0
|
||||||
|
ldr r1, =_svc_stack_size
|
||||||
|
ldr sp, =_svc_stack
|
||||||
|
add sp, sp, r1
|
||||||
|
sub sp, sp, #0x64
|
||||||
|
|
||||||
|
|
||||||
|
/* disable mmu, I and D caches*/
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
mrc p15, 0, r0, c1, c0, 0
|
||||||
|
bic r0, r0, #0x01
|
||||||
|
bic r0, r0, #0x04
|
||||||
|
bic r0, r0, #0x01000
|
||||||
|
mcr p15, 0, r0, c1, c0, 0
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
/* clean data cache */
|
||||||
|
mov r1,#0x00
|
||||||
|
Loop1:
|
||||||
|
mov r2,#0x00
|
||||||
|
Loop2:
|
||||||
|
mov r3, r2, lsl#26
|
||||||
|
orr r3, r3, r1, lsl#5
|
||||||
|
mcr p15, 0, r3, c7, c14, 2
|
||||||
|
add r2, r2, #0x01
|
||||||
|
cmp r2, #64
|
||||||
|
bne Loop2
|
||||||
|
add r1, r1, #0x01
|
||||||
|
cmp r1, #8
|
||||||
|
bne Loop1
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize the MMU. After we return, the MMU is enabled,
|
||||||
|
* and memory may be remapped. I hope we don't remap this
|
||||||
|
* memory away.
|
||||||
|
*/
|
||||||
|
ldr r0, =mem_map
|
||||||
|
bl mmu_init
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize the exception vectors. This includes the
|
||||||
|
* exceptions vectors (0x00000000-0x0000001c), and the
|
||||||
|
* pointers to the exception handlers (0x00000020-0x0000003c).
|
||||||
|
*/
|
||||||
|
mov r0, #0
|
||||||
|
adr r1, vector_block
|
||||||
|
ldmia r1!, {r2-r9}
|
||||||
|
stmia r0!, {r2-r9}
|
||||||
|
ldmia r1!, {r2-r9}
|
||||||
|
stmia r0!, {r2-r9}
|
||||||
|
|
||||||
|
/* Now we are prepared to start the BSP's C code */
|
||||||
|
bl boot_card
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Theoretically, we could return to what started us up,
|
||||||
|
* but we'd have to have saved the registers and stacks.
|
||||||
|
* Instead, we'll just reset.
|
||||||
|
*/
|
||||||
|
bl bsp_reset
|
||||||
|
|
||||||
|
/* We shouldn't get here. If we do, hang */
|
||||||
|
_hang: b _hang
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is the exception vector table and the pointers to
|
||||||
|
* the functions that handle the exceptions. It's a total
|
||||||
|
* of 16 words (64 bytes)
|
||||||
|
*/
|
||||||
|
vector_block:
|
||||||
|
ldr pc, Reset_Handler
|
||||||
|
ldr pc, Undefined_Handler
|
||||||
|
ldr pc, SWI_Handler
|
||||||
|
ldr pc, Prefetch_Handler
|
||||||
|
ldr pc, Abort_Handler
|
||||||
|
nop
|
||||||
|
ldr pc, IRQ_Handler
|
||||||
|
ldr pc, FIQ_Handler
|
||||||
|
|
||||||
|
Reset_Handler: b bsp_reset
|
||||||
|
Undefined_Handler: b Undefined_Handler
|
||||||
|
SWI_Handler: b SWI_Handler
|
||||||
|
Prefetch_Handler: b Prefetch_Handler
|
||||||
|
Abort_Handler: b Abort_Handler
|
||||||
|
nop
|
||||||
|
IRQ_Handler: b IRQ_Handler
|
||||||
|
FIQ_Handler: b FIQ_Handler
|
||||||
|
|
||||||
|
.globl Reset_Handler
|
||||||
|
.globl Undefined_Handler
|
||||||
|
.globl SWI_Handler
|
||||||
|
.globl Prefetch_Handler
|
||||||
|
.globl Abort_Handler
|
||||||
|
.globl IRQ_Handler
|
||||||
|
.globl FIQ_Handler
|
||||||
14
c/src/lib/libbsp/arm/gp32/startup/.cvsignore
Normal file
14
c/src/lib/libbsp/arm/gp32/startup/.cvsignore
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
aclocal.m4
|
||||||
|
autom4te.cache
|
||||||
|
config.cache
|
||||||
|
config.guess
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
depcomp
|
||||||
|
install-sh
|
||||||
|
missing
|
||||||
|
mkinstalldirs
|
||||||
195
c/src/lib/libbsp/arm/gp32/startup/bspstart.c
Normal file
195
c/src/lib/libbsp/arm/gp32/startup/bspstart.c
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| This file contains the ARM 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.
|
||||||
|
+--------------------------------------------------------------------------+
|
||||||
|
|
|
||||||
|
| Copyright (c) 2000 Canon Research Centre France SA.
|
||||||
|
| Emmanuel Raguet, mailto:raguet@crf.canon.fr
|
||||||
|
|
|
||||||
|
| The license and distribution terms for this file may be
|
||||||
|
| found in found in the file LICENSE in this distribution or at
|
||||||
|
| http://www.rtems.com/license/LICENSE.
|
||||||
|
|
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <bsp.h>
|
||||||
|
#include <rtems/libcsupport.h>
|
||||||
|
#include <rtems/libio.h>
|
||||||
|
#include <s3c2400.h>
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| Global Variables
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
extern void *_sdram_size;
|
||||||
|
extern void *_sdram_base;
|
||||||
|
extern void *_bss_free_start;
|
||||||
|
|
||||||
|
unsigned long free_mem_start;
|
||||||
|
unsigned long free_mem_end;
|
||||||
|
|
||||||
|
/* The original BSP configuration table from the application and our copy of it
|
||||||
|
with some changes. */
|
||||||
|
|
||||||
|
extern rtems_configuration_table Configuration;
|
||||||
|
rtems_configuration_table BSP_Configuration;
|
||||||
|
|
||||||
|
rtems_cpu_table Cpu_table; /* CPU configuration table. */
|
||||||
|
char *rtems_progname = "RTEMS"; /* Program name - from main(). */
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| External Prototypes
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
extern void rtems_irq_mngt_init(void);
|
||||||
|
void bsp_libc_init( void *, uint32_t, int );
|
||||||
|
void bsp_postdriver_hook(void);
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| Function: bsp_pretasking_hook
|
||||||
|
| Description: BSP pretasking hook. Called just before drivers are
|
||||||
|
| initialized. Used to setup libc and install any BSP
|
||||||
|
| extensions. NOTE: Must not use libc (to do io) from here,
|
||||||
|
| since drivers are not yet initialized.
|
||||||
|
| Global Variables: None.
|
||||||
|
| Arguments: None.
|
||||||
|
| Returns: Nothing.
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
void bsp_pretasking_hook(void)
|
||||||
|
{
|
||||||
|
uint32_t heap_start;
|
||||||
|
uint32_t heap_size;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set up the heap.
|
||||||
|
*/
|
||||||
|
heap_start = free_mem_start;
|
||||||
|
heap_size = free_mem_end - free_mem_start;
|
||||||
|
|
||||||
|
/* call rtems lib init - malloc stuff */
|
||||||
|
bsp_libc_init((void *)heap_start, heap_size, 0);
|
||||||
|
|
||||||
|
#ifdef RTEMS_DEBUG
|
||||||
|
|
||||||
|
rtems_debug_enable(RTEMS_DEBUG_ALL_MASK);
|
||||||
|
|
||||||
|
#endif /* RTEMS_DEBUG */
|
||||||
|
|
||||||
|
} /* bsp_pretasking_hook */
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| Function: bsp_start
|
||||||
|
| Description: Called before main is invoked.
|
||||||
|
| Global Variables: None.
|
||||||
|
| Arguments: None.
|
||||||
|
| Returns: Nothing.
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
void bsp_start_default( void )
|
||||||
|
{
|
||||||
|
uint32_t cr;
|
||||||
|
/* If we don't have command line arguments set default program name. */
|
||||||
|
|
||||||
|
Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
|
||||||
|
Cpu_table.predriver_hook = NULL; /* use system's */
|
||||||
|
Cpu_table.postdriver_hook = bsp_postdriver_hook;
|
||||||
|
Cpu_table.idle_task = NULL;
|
||||||
|
|
||||||
|
Cpu_table.do_zero_of_workspace = TRUE;
|
||||||
|
Cpu_table.interrupt_stack_size = 4096;
|
||||||
|
Cpu_table.extra_mpci_receive_server_stack = 0;
|
||||||
|
|
||||||
|
/* stop all timers */
|
||||||
|
rTCON=0x0;
|
||||||
|
|
||||||
|
/* disable interrupts */
|
||||||
|
rINTMOD=0x0;
|
||||||
|
rINTMSK=BIT_ALLMSK; /* unmasked by drivers */
|
||||||
|
rSRCPND=BIT_ALLMSK;
|
||||||
|
rINTMSK=BIT_ALLMSK;
|
||||||
|
rINTPND=BIT_ALLMSK;
|
||||||
|
|
||||||
|
/* setup clocks 133/66/33) */
|
||||||
|
rCLKDIVN=3;
|
||||||
|
rMPLLCON=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV);
|
||||||
|
|
||||||
|
/* set prescaler for timers 2,3,4 to 16(15+1) */
|
||||||
|
cr=rTCFG0 & 0xFFFF00FF;
|
||||||
|
rTCFG0=(cr | (15<<8));
|
||||||
|
|
||||||
|
/* set prescaler for timers 0,1 to 1(0+1) */
|
||||||
|
cr=rTCFG0 & 0xFFFFFF00;
|
||||||
|
rTCFG0=(cr | (0<<0));
|
||||||
|
|
||||||
|
/* Place RTEMS workspace at beginning of free memory. */
|
||||||
|
BSP_Configuration.work_space_start = (void *)&_bss_free_start;
|
||||||
|
|
||||||
|
free_mem_start = ((uint32_t)&_bss_free_start + BSP_Configuration.work_space_size);
|
||||||
|
|
||||||
|
free_mem_end = ((uint32_t)&_sdram_base + (uint32_t)&_sdram_size);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Init rtems exceptions management
|
||||||
|
*/
|
||||||
|
rtems_exception_init_mngt();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Init rtems interrupt management
|
||||||
|
*/
|
||||||
|
rtems_irq_mngt_init();
|
||||||
|
/*
|
||||||
|
* The following information is very useful when debugging.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
printk( "work_space_size = 0x%x\n", BSP_Configuration.work_space_size );
|
||||||
|
printk( "maximum_extensions = 0x%x\n", BSP_Configuration.maximum_extensions );
|
||||||
|
printk( "microseconds_per_tick = 0x%x\n",
|
||||||
|
BSP_Configuration.microseconds_per_tick );
|
||||||
|
printk( "ticks_per_timeslice = 0x%x\n",
|
||||||
|
BSP_Configuration.ticks_per_timeslice );
|
||||||
|
printk( "maximum_devices = 0x%x\n", BSP_Configuration.maximum_devices );
|
||||||
|
printk( "number_of_device_drivers = 0x%x\n",
|
||||||
|
BSP_Configuration.number_of_device_drivers );
|
||||||
|
printk( "Device_driver_table = 0x%x\n",
|
||||||
|
BSP_Configuration.Device_driver_table );
|
||||||
|
|
||||||
|
printk( "_heap_size = 0x%x\n", _heap_size );
|
||||||
|
/* printk( "_stack_size = 0x%x\n", _stack_size );*/
|
||||||
|
printk( "rtemsFreeMemStart = 0x%x\n", rtemsFreeMemStart );
|
||||||
|
printk( "work_space_start = 0x%x\n", BSP_Configuration.work_space_start );
|
||||||
|
printk( "work_space_size = 0x%x\n", BSP_Configuration.work_space_size );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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")));
|
||||||
|
|
||||||
|
void bsp_reset(void)
|
||||||
|
{
|
||||||
|
rtems_interrupt_level level;
|
||||||
|
_CPU_ISR_Disable(level);
|
||||||
|
printk("bsp_reset.....\n");
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LCD_BREAK()
|
||||||
|
{
|
||||||
|
int x,y;
|
||||||
|
unsigned short color=0;
|
||||||
|
volatile unsigned char* framebuffer = (unsigned char*) 0x0C7B4000;
|
||||||
|
while(1) {
|
||||||
|
for(y = 0; y < 240; y++) {
|
||||||
|
for(x = 0; x < 320; x++) {
|
||||||
|
*(framebuffer + (239 - y) + (240 * x)) = color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
color++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
29
c/src/lib/libbsp/arm/gp32/startup/exit.c
Normal file
29
c/src/lib/libbsp/arm/gp32/startup/exit.c
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
/*-------------------------------------------------------------------------+
|
||||||
|
| exit.c - ARM BSP
|
||||||
|
+--------------------------------------------------------------------------+
|
||||||
|
| Routines to shutdown and reboot the BSP.
|
||||||
|
+--------------------------------------------------------------------------+
|
||||||
|
|
|
||||||
|
| Copyright (c) 2000 Canon Research Centre France SA.
|
||||||
|
| Emmanuel Raguet, mailto:raguet@crf.canon.fr
|
||||||
|
|
|
||||||
|
| The license and distribution terms for this file may be
|
||||||
|
| found in found in the file LICENSE in this distribution or at
|
||||||
|
| http://www.rtems.com/license/LICENSE.
|
||||||
|
|
|
||||||
|
+--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <bsp.h>
|
||||||
|
#include <rtems/bspIo.h>
|
||||||
|
#include <rtems/libio.h>
|
||||||
|
|
||||||
|
void bsp_reset();
|
||||||
|
|
||||||
|
void bsp_cleanup(void)
|
||||||
|
{
|
||||||
|
bsp_reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
275
c/src/lib/libbsp/arm/gp32/startup/linkcmds
Normal file
275
c/src/lib/libbsp/arm/gp32/startup/linkcmds
Normal file
@@ -0,0 +1,275 @@
|
|||||||
|
/*
|
||||||
|
* GP32 Linker script
|
||||||
|
*
|
||||||
|
* Written by Philippe Simons <loki_666@fastmail.fm>
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in the file LICENSE in this distribution or at
|
||||||
|
*
|
||||||
|
* http://www.OARcorp.com/rtems/license.html.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm","elf32-littlearm")
|
||||||
|
OUTPUT_ARCH(arm)
|
||||||
|
ENTRY(_start)
|
||||||
|
/* SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib); */
|
||||||
|
|
||||||
|
|
||||||
|
MEMORY {
|
||||||
|
sdram : ORIGIN = 0xc000000, LENGTH = 7M
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Declare some sizes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* The base for SDRAM is set to umon's APPRAMBASE */
|
||||||
|
_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0xc000000;
|
||||||
|
_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 7M;
|
||||||
|
|
||||||
|
|
||||||
|
_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
|
||||||
|
_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
|
||||||
|
_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
|
||||||
|
_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Do we need any of these for elf?
|
||||||
|
__DYNAMIC = 0; */
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.base :
|
||||||
|
{
|
||||||
|
arm_exception_table = .;
|
||||||
|
|
||||||
|
arm_reset_vect = .; /* 0x00 */
|
||||||
|
. += 4;
|
||||||
|
|
||||||
|
arm_undef_vect = .; /* 0x04 */
|
||||||
|
. += 4;
|
||||||
|
|
||||||
|
arm_swi_vect = .; /* 0x08 */
|
||||||
|
. += 4;
|
||||||
|
|
||||||
|
arm_iabrt_vect = .; /* 0x0c */
|
||||||
|
. += 4;
|
||||||
|
|
||||||
|
arm_dabrt_vect = .; /* 0x10 */
|
||||||
|
. += 4;
|
||||||
|
|
||||||
|
/* no vector here */
|
||||||
|
. += 4;
|
||||||
|
|
||||||
|
arm_irq_vect = .; /* 0x18 */
|
||||||
|
. += 4;
|
||||||
|
|
||||||
|
arm_fiq_vect = .; /* 0x1c */
|
||||||
|
. += 4;
|
||||||
|
/* FIXME: */
|
||||||
|
|
||||||
|
rtems_vector_table = .;
|
||||||
|
. += (8 * 4); /* 8 ARM interrupts */
|
||||||
|
|
||||||
|
bsp_vector_table = .;
|
||||||
|
. += (32 * 4); /* 32 S3C2400 interrupts */
|
||||||
|
|
||||||
|
. = ALIGN (0x100);
|
||||||
|
|
||||||
|
|
||||||
|
} > sdram
|
||||||
|
|
||||||
|
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
_axf_text_start = . ;
|
||||||
|
*(EXCLUDE_FILE (*text.iwram*) .text)
|
||||||
|
*(.text.*)
|
||||||
|
*(.stub)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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)
|
||||||
|
*(.gnu.linkonce.t*)
|
||||||
|
*(.glue_7)
|
||||||
|
*(.glue_7t)
|
||||||
|
|
||||||
|
. = ALIGN(4); /* REQUIRED. LD is flaky without it. */
|
||||||
|
} > sdram
|
||||||
|
|
||||||
|
__text_end = . ;
|
||||||
|
|
||||||
|
.init :
|
||||||
|
{
|
||||||
|
*(.init)
|
||||||
|
} > sdram /*=0*/
|
||||||
|
|
||||||
|
.jcr :
|
||||||
|
{
|
||||||
|
*(.jcr)
|
||||||
|
} > sdram
|
||||||
|
|
||||||
|
|
||||||
|
.fini :
|
||||||
|
{
|
||||||
|
*(.fini)
|
||||||
|
} > sdram /*=0*/
|
||||||
|
|
||||||
|
.rodata :
|
||||||
|
{
|
||||||
|
*(.rodata)
|
||||||
|
*all.rodata*(*)
|
||||||
|
*(.roda)
|
||||||
|
*(.rodata.*)
|
||||||
|
*(.gnu.linkonce.r*)
|
||||||
|
SORT(CONSTRUCTORS)
|
||||||
|
. = ALIGN(4); /* REQUIRED. LD is flaky without it. */
|
||||||
|
} > sdram = 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))
|
||||||
|
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
|
||||||
|
KEEP (*(SORT(.ctors.*)))
|
||||||
|
KEEP (*(.ctors))
|
||||||
|
. = ALIGN(4); /* REQUIRED. LD is flaky without it. */
|
||||||
|
} >sdram = 0
|
||||||
|
|
||||||
|
.dtors :
|
||||||
|
{
|
||||||
|
KEEP (*crtbegin.o(.dtors))
|
||||||
|
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
|
||||||
|
KEEP (*(SORT(.dtors.*)))
|
||||||
|
KEEP (*(.dtors))
|
||||||
|
. = ALIGN(4); /* REQUIRED. LD is flaky without it. */
|
||||||
|
} >sdram = 0
|
||||||
|
|
||||||
|
|
||||||
|
.eh_frame :
|
||||||
|
{
|
||||||
|
KEEP (*(.eh_frame))
|
||||||
|
. = ALIGN(4); /* REQUIRED. LD is flaky without it. */
|
||||||
|
} >sdram = 0
|
||||||
|
|
||||||
|
.gcc_except_table :
|
||||||
|
{
|
||||||
|
*(.gcc_except_table)
|
||||||
|
. = ALIGN(4); /* REQUIRED. LD is flaky without it. */
|
||||||
|
} >sdram = 0
|
||||||
|
_axf_ro_end = . ;
|
||||||
|
|
||||||
|
.data ALIGN(4) :
|
||||||
|
{
|
||||||
|
_axf_data_start = ABSOLUTE(.);
|
||||||
|
*(.data)
|
||||||
|
*(.data.*)
|
||||||
|
*(.gnu.linkonce.d*)
|
||||||
|
CONSTRUCTORS
|
||||||
|
. = ALIGN(4); /* REQUIRED. LD is flaky without it. */
|
||||||
|
} >sdram = 0xff
|
||||||
|
|
||||||
|
__data_end = . ;
|
||||||
|
|
||||||
|
.bss ALIGN(4):
|
||||||
|
{
|
||||||
|
_axf_bss_start = ABSOLUTE(.);
|
||||||
|
_clear_start = .;
|
||||||
|
*(.bss)
|
||||||
|
*(.bss.*)
|
||||||
|
*(.gnu.linkonce.b.*)
|
||||||
|
*(COMMON)
|
||||||
|
. = ALIGN(64);
|
||||||
|
_clear_end = .;
|
||||||
|
|
||||||
|
. = ALIGN (256);
|
||||||
|
_abt_stack = .;
|
||||||
|
. += _abt_stack_size;
|
||||||
|
|
||||||
|
. = ALIGN (256);
|
||||||
|
_irq_stack = .;
|
||||||
|
. += _irq_stack_size;
|
||||||
|
|
||||||
|
. = ALIGN (256);
|
||||||
|
_fiq_stack = .;
|
||||||
|
. += _fiq_stack_size;
|
||||||
|
|
||||||
|
. = ALIGN (256);
|
||||||
|
_svc_stack = .;
|
||||||
|
. += _svc_stack_size;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ideally, the MMU's translation table would be in SRAM. But we
|
||||||
|
* don't have any. If we don't use more regions than TLB entries (64),
|
||||||
|
* the lookup will only happen once for each region.
|
||||||
|
*/
|
||||||
|
. = ALIGN (16 * 1024);
|
||||||
|
_ttbl_base = .;
|
||||||
|
. += (16 * 1024);
|
||||||
|
|
||||||
|
. = ALIGN (1024);
|
||||||
|
_bss_free_start = .;
|
||||||
|
|
||||||
|
} > sdram
|
||||||
|
_axf_bss_end = . ;
|
||||||
|
|
||||||
|
_end = . ;
|
||||||
|
__end__ = . ;
|
||||||
|
PROVIDE (end = _end);
|
||||||
|
|
||||||
|
|
||||||
|
/* Debugging stuff follows? */
|
||||||
|
|
||||||
|
/* 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) }
|
||||||
|
.comment 0 : { *(.comment) }
|
||||||
|
/* 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) }
|
||||||
|
/* 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) }
|
||||||
|
/*.stack 0x80000 : { _stack = .; *(.stack) }*/
|
||||||
|
/* These must appear regardless of . */
|
||||||
|
}
|
||||||
|
|
||||||
28
c/src/lib/libbsp/arm/gp32/startup/memmap.c
Normal file
28
c/src/lib/libbsp/arm/gp32/startup/memmap.c
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* GP32 Memory Map
|
||||||
|
*
|
||||||
|
* Copyright (c) 2004 by Cogent Computer Systems
|
||||||
|
* Written by Jay Monkman <jtm@lopingdog.com>
|
||||||
|
*
|
||||||
|
* The license and distribution terms for this file may be
|
||||||
|
* found in the file LICENSE in this distribution or at
|
||||||
|
*
|
||||||
|
* http://www.OARcorp.com/rtems/license.html.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
#include <rtems.h>
|
||||||
|
#include <libcpu/mmu.h>
|
||||||
|
|
||||||
|
/* Remember, the ARM920 has 64 TLBs. If you have more 1MB sections than
|
||||||
|
* that, you'll have TLB lookups, which could hurt performance.
|
||||||
|
*/
|
||||||
|
mmu_sect_map_t mem_map[] = {
|
||||||
|
/* <phys addr> <virt addr> <size> <flags> */
|
||||||
|
{0x0c000000, 0x00000000, 1, MMU_CACHE_NONE}, /* SDRAM for vectors */
|
||||||
|
{0x0c000000, 0x0c000000, 7, MMU_CACHE_WTHROUGH}, /* SDRAM W cache */
|
||||||
|
{0x0c700000, 0x0c700000, 1, MMU_CACHE_NONE}, /* SDRAM W/O cache */
|
||||||
|
{0x14000000, 0x14000000, 16, MMU_CACHE_NONE}, /* Internals Regs - */
|
||||||
|
{0x15000000, 0x15000000, 16, MMU_CACHE_NONE}, /* Internal Regs - */
|
||||||
|
{0x00000000, 0x00000000, 0, 0} /* The end */
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user