Patch from Ralf Corseipus to fix latent configure problems suddenly triggered:

The breakdown:
        * CC_FOR_TARGET and CXX_FOR_TARGET were not correctly re-read
          from autoconf's configuration cache (config.cache)

        * If <target>-[gcc|g++] was not found while running configure,
          the config macros tried to use other (wrong) compilers (e.g. cc).

    Changes:
        * New RTEMS_PROG_CC macro (aclocal/prog-cc.m4).
        * New RTEMS_PROG_CXX macro (aclocal/prog-cxx.m4)
        * Moved a shell script fragment from configure.in to a
          new m4-autoconf macro (New file: aclocal/tool-prefix.m4)
        * Minor changes to configure.in

    I tested it with linux/posix (native gcc/primary libc) and
    sh-rtems/gensh1 on a linux host and didn't notice any bugs
    related to the problems mentioned above.  There seem to be
    more bugs with the posix bsp, but I consider them minor as
    the build run completed successfully. It is just too late
    for me to attempt to fix them now.
This commit is contained in:
Joel Sherrill
1998-05-20 17:06:57 +00:00
parent 17a8d60365
commit 2efdd08b40
10 changed files with 264 additions and 356 deletions

View File

@@ -21,10 +21,6 @@ fi
dnl check whether the tools exist
dnl FIXME: What shall be done if they don't exist?
dnl NOTE: CC_FOR_TARGET should always be valid at this point,
dnl cf. RTEMS_PROG_CC
AC_PATH_PROG(CC_FOR_TARGET,"$program_prefix"gcc,no)
dnl FIXME: This may fail if the compiler has not been recognized as gcc
dnl and uses tools with different names
AC_PATH_PROG(AR_FOR_TARGET,"$program_prefix"ar,no)

View File

@@ -3,22 +3,29 @@ dnl $Id$
dnl
dnl Check for target gcc
dnl
dnl Adaptation of autoconf-2.12's AC_PROG_CC to rtems
dnl
dnl 98/02/10 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
dnl
dnl 98/05/20 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
dnl Completely reworked
AC_DEFUN(RTEMS_PROG_CC,
[
AC_BEFORE([$0], [AC_PROG_CPP])dnl
AC_BEFORE([$0], [AC_PROG_CC])dnl
AC_CHECK_PROG(CC, gcc, gcc)
if test -z "$CC"; then
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
fi
AC_REQUIRE([RTEMS_TOOL_PREFIX])dnl
RTEMS_PROG_CC_WORKS
dnl Only accept gcc and cc
dnl NOTE: This might be too restrictive for native compilation
AC_PATH_PROGS(CC_FOR_TARGET, "$program_prefix"gcc "$program_prefix"cc )
test -z "$CC_FOR_TARGET" \
&& AC_MSG_ERROR([no acceptable cc found in \$PATH])
dnl backup
rtems_save_CC=$CC
rtems_save_CFLAGS=$CFLAGS
dnl temporarily set CC
CC=$CC_FOR_TARGET
AC_PROG_CC_WORKS
AC_PROG_CC_GNU
if test $ac_cv_prog_gcc = yes; then
@@ -42,34 +49,17 @@ else
test "${CFLAGS+set}" = set || CFLAGS="-g"
fi
CC_FOR_TARGET=$CC
rtems_cv_prog_gcc=$ac_cv_prog_gcc
rtems_cv_prog_cc_g=$ac_cv_prog_cc_g
rtems_cv_prog_cc_works=$ac_cv_prog_cc_works
rtems_cv_prog_cc_cross=$ac_cv_prog_cc_cross
dnl restore initial values
unset CC
CC=$rtems_save_CC
CFLAGS=$rtems_save_CFLAGS
unset ac_cv_prog_gcc
unset ac_cv_prog_cc_g
unset ac_cv_prog_CC
])
dnl Almost identical to AC_PROG_CC_WORKS
dnl added malloc to program fragment, because rtems has its own malloc
dnl which is not available while bootstrapping rtems
AC_DEFUN(RTEMS_PROG_CC_WORKS,
[AC_MSG_CHECKING([whether the target C compiler ($CC $CFLAGS $LDFLAGS) works])
AC_LANG_SAVE
AC_LANG_C
AC_TRY_COMPILER(
[main(){return(0);}],
rtems_cv_prog_cc_works, rtems_cv_prog_cc_cross)
AC_LANG_RESTORE
AC_MSG_RESULT($rtems_cv_prog_cc_works)
if test $rtems_cv_prog_cc_works = no; then
AC_MSG_ERROR([installation or configuration problem: target C compiler cannot create executables.])
fi
AC_MSG_CHECKING([whether the target C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler])
AC_MSG_RESULT($rtems_cv_prog_cc_cross)
unset ac_cv_prog_cc_works
unset ac_cv_prog_cc_cross
])

View File

@@ -3,18 +3,29 @@ dnl $Id$
dnl
dnl Check for target g++
dnl
dnl Adaptation of autoconf-2.12's AC_PROG_CXX to rtems
dnl
dnl 98/02/10 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
dnl
dnl 98/05/20 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
dnl Completely reworked
AC_DEFUN(RTEMS_PROG_CXX,
[
AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
AC_BEFORE([$0], [AC_PROG_CXX])dnl
AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
AC_REQUIRE([RTEMS_TOOL_PREFIX])dnl
RTEMS_PROG_CXX_WORKS
dnl Only accept g++ and c++
dnl NOTE: This might be too restrictive for native compilation
AC_PATH_PROGS(CXX_FOR_TARGET, "$program_prefix"g++ "$program_prefix"c++)
test -z "$CXX_FOR_TARGET" \
&& AC_MSG_ERROR([no acceptable c++ found in \$PATH])
dnl backup
rtems_save_CXX=$CXX
rtems_save_CXXFLAGS=$CXXFLAGS
dnl temporarily set CXX
CXX=$CXX_FOR_TARGET
AC_PROG_CXX_WORKS
AC_PROG_CXX_GNU
if test $ac_cv_prog_gxx = yes; then
@@ -37,32 +48,18 @@ else
GXX=
test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
fi
CXX_FOR_TARGET=$CXX
rtems_cv_prog_gxx=$ac_cv_prog_gxx
rtems_cv_prog_cxx_g=$ac_cv_prog_cxx_g
rtems_cv_prog_cxx_works=$ac_cv_prog_cxx_works
rtems_cv_prog_cxx_cross=$ac_cv_prog_cxx_cross
CXX=$rtems_save_CXX
CXXFLAGS=$rtems_save_CXXFLAGS
dnl restore initial values
unset CXX
unset ac_cv_prog_gxx
])
dnl Almost identical to AC_PROG_CXX_WORKS
dnl Additional handling of malloc
dnl NOTE: using newlib with a native compiler is cross-compiling, indeed.
AC_DEFUN(RTEMS_PROG_CXX_WORKS,
[AC_MSG_CHECKING([whether the target C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl this fails if rtems uses newlib, because rtems has its own malloc which
dnl is not available at bootstrap
AC_TRY_COMPILER(
[main(){return(0);}],
rtems_cv_prog_cxx_works, rtems_cv_prog_cxx_cross)
AC_LANG_RESTORE
AC_MSG_RESULT($rtems_cv_prog_cxx_works)
if test $rtems_cv_prog_cxx_works = no; then
AC_MSG_ERROR([installation or configuration problem: target C++ compiler cannot create executables.])
fi
AC_MSG_CHECKING([whether the target C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
AC_MSG_RESULT($rtems_cv_prog_cxx_cross)
unset ac_cv_prog_cc_g
unset ac_cv_prog_cxx_works
unset ac_cv_prog_cxx_cross
])

View File

@@ -17,8 +17,13 @@ C_O_FILES=$(C_PIECES:%=${ARCH}/%.o)
H_FILES=
# Assembly source names, if any, go here -- minus the .s
S_PIECES=videoAsm
S_FILES=$(S_PIECES:%=%.s)
S_O_FILES=$(S_FILES:%.s=${ARCH}/%.o)
SRCS=$(C_FILES) $(H_FILES)
OBJS=$(C_O_FILES)
OBJS=$(C_O_FILES) $(S_O_FILES)
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
include $(RTEMS_ROOT)/make/leaf.cfg

View File

@@ -1,33 +1,28 @@
/*-------------------------------------------------------------------------+
| outch.c v1.1 - PC386 BSP - 1997/08/07
+--------------------------------------------------------------------------+
| (C) Copyright 1997 -
| - NavIST Group - Real-Time Distributed Systems and Industrial Automation
|
| http://pandora.ist.utl.pt
|
| Instituto Superior Tecnico * Lisboa * PORTUGAL
+--------------------------------------------------------------------------+
| Disclaimer:
|
| This file is provided "AS IS" without warranty of any kind, either
| expressed or implied.
+--------------------------------------------------------------------------+
| This code is based on:
| outch.c,v 1.4 1995/12/19 20:07:27 joel Exp - go32 BSP
| With the following copyright notice:
| **************************************************************************
| * COPYRIGHT (c) 1989-1998.
| * On-Line Applications Research Corporation (OAR).
| * Copyright assigned to U.S. Government, 1994.
| *
| * The license and distribution terms for this file may be
| * found in found in the file LICENSE in this distribution or at
| * http://www.OARcorp.com/rtems/license.html.
| **************************************************************************
|
| $Id$
+--------------------------------------------------------------------------*/
/*
* outch.c - This file contains code for displaying characters
* on the console uisng information that should be
* maintained by the BIOS in its data Area.
*
* Copyright (C) 1998 valette@crf.canon.fr
*
* Canon Centre Recherche France.
*
* This code is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this file; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Header$
*/
#include <bsp.h>
@@ -35,227 +30,117 @@
#include <stdlib.h>
#include <string.h>
/*-------------------------------------------------------------------------+
| Constants
+--------------------------------------------------------------------------*/
#define DISPLAY_CELL_COUNT (MAX_ROW * MAX_COL)
/* Number of display cells. */
#define TABSIZE 4 /* Number of spaces for TAB (\t) char. */
#define WHITE 0x0700 /* White on Black background colour. */
#define BLANK (WHITE | ' ') /* Blank character. */
#include <crt.h>
extern void wr_cursor(int, unsigned short);
/*-------------------------------------------------------------------------+
| Global Variables
+--------------------------------------------------------------------------*/
static rtems_unsigned16 *videoRam = TVRAM;
/* Physical address of start of video text memory. */
static rtems_unsigned16 *videoRamPtr = TVRAM;
/* Pointer for current output position in display. */
static rtems_unsigned8 videoRows = MAX_ROW; /* Number of rows in display. */
static rtems_unsigned8 videoCols = MAX_COL; /* Number of columns in display. */
static rtems_unsigned8 cursRow = 0; /* Current cursor row. */
static rtems_unsigned8 cursCol = 0; /* Current cursor column. */
#define TAB_SPACE 4
static unsigned short *bitMapBaseAddr;
static unsigned short ioCrtBaseAddr;
static unsigned short maxCol;
static unsigned short maxRow;
static unsigned char row;
static unsigned char column;
static unsigned short attribute;
static unsigned int nLines;
/*-------------------------------------------------------------------------+
| Function: setHardwareCursorPos
| Description: Set hardware video cursor at given offset into video RAM.
| Global Variables: None.
| Arguments: videoCursor - Offset into video memory.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static inline void
setHardwareCursorPos(rtems_unsigned16 videoCursor)
static void
scroll()
{
outport_byte(GDC_REG_PORT, 0xe);
outport_byte(GDC_VAL_PORT, (videoCursor >> 8) & 0xff);
outport_byte(GDC_REG_PORT, 0xf);
outport_byte(GDC_VAL_PORT, videoCursor & 0xff);
} /* setHardwareCursorPos */
/*-------------------------------------------------------------------------+
| Function: updateVideoRamPtr
| Description: Updates value of global variable "videoRamPtr" based on
| current window's cursor position.
| Global Variables: videoRamPtr, cursRow, cursCol.
| Arguments: None.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static inline void
updateVideoRamPtr(void)
{
videoRamPtr = videoRam + cursRow * videoCols + cursCol;
} /* updateVideoRamPtr */
/*-------------------------------------------------------------------------+
| Function: scrollUp
| Description: Scrolls display up n lines.
| Global Variables: None.
| Arguments: lines - number of lines to scroll.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static void
scrollUp(rtems_unsigned8 lines)
{
rtems_unsigned16 blankCount;
/* Number of blank display cells on bottom of window. */
rtems_unsigned16 *ptrDst, *ptrSrc;
/* Source and destination pointers for memory copy operations. */
if (lines < videoRows) /* Move window's contents up. */
{
rtems_unsigned16 nonBlankCount;
/* Number of non-blank cells on upper part of display (total - blank). */
blankCount = lines * videoCols;
nonBlankCount = DISPLAY_CELL_COUNT - blankCount;
ptrSrc = videoRam + blankCount;
ptrDst = videoRam;
while(nonBlankCount--)
*ptrDst++ = *ptrSrc++;
}
else /* Clear the whole display. */
{
blankCount = DISPLAY_CELL_COUNT;
ptrDst = videoRam;
}
/* Fill bottom with blanks. */
while (blankCount-- > 0)
*ptrDst++ = BLANK;
} /* scrollUp */
/*-------------------------------------------------------------------------+
| Function: printCHAR
| Description: Print printable character to display.
| Global Variables: videoRamPtr, cursRow, cursCol.
| Arguments: c - character to write to display.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static void
printCHAR(char c)
{
*videoRamPtr++ = c | WHITE;
cursCol++;
if (cursCol == videoCols)
{
cursCol = 0;
cursRow++;
if (cursRow == videoRows)
{
cursRow--;
scrollUp(1);
videoRamPtr -= videoCols;
int i, j; /* Counters */
unsigned short *pt_scroll, *pt_bitmap; /* Pointers on the bit-map */
pt_bitmap = bitMapBaseAddr;
j = 0;
pt_bitmap = pt_bitmap + j;
pt_scroll = pt_bitmap + maxCol;
for (i = j; i < (maxRow - 1) * maxCol; i++) {
*pt_bitmap++ = *pt_scroll++;
}
}
} /* printCHAR */
/*
* Blank characters are displayed on the last line.
*/
for (i = 0; i < maxCol; i++) {
*pt_bitmap++ = (short) (' ' | attribute);
}
}
/*-------------------------------------------------------------------------+
| Function: printBS
| Description: Print BS (BackSpace - '\b') character to display.
| Global Variables: videoRamPtr, cursRow, cursCol.
| Arguments: None.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static inline void
printBS(void)
static void
endColumn()
{
/* Move cursor back one cell. */
if (cursCol > 0)
cursCol--;
else if (cursRow > 0)
{
cursRow--;
cursCol = videoCols - 1;
}
else
return;
/* Write a whitespace. */
*(--videoRamPtr) = BLANK;
} /* printBS */
if (++row == maxRow) {
scroll(); /* Scroll the screen now */
row = maxRow - 1;
}
column = 0;
nLines++;
/* Move cursor on the next location */
wr_cursor(row * maxCol + column, ioCrtBaseAddr);
}
/*-------------------------------------------------------------------------+
| Function: printHT
| Description: Print HT (Horizontal Tab - '\t') character to display.
| Global Variables: cursCol.
| Arguments: None.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static inline void
printHT(void)
static void
videoPutChar(char car)
{
do
printCHAR(' ');
while (cursCol % TABSIZE);
} /* printHT */
unsigned short *pt_bitmap = bitMapBaseAddr + row * maxCol;
switch (car) {
case '\b': {
if (column) column--;
/* Move cursor on the previous location */
wr_cursor(row * maxCol + column, ioCrtBaseAddr);
return;
}
case '\t': {
int i;
i = TAB_SPACE - (column & (TAB_SPACE - 1));
pt_bitmap += column;
column += i;
if (column >= maxCol) {
endColumn();
return;
}
while (i--) *pt_bitmap++ = ' ' | attribute;
wr_cursor(row * maxCol + column, ioCrtBaseAddr);
return;
}
case '\n': {
endColumn();
return;
}
case 7: { /* Bell code must be inserted here */
return;
}
case '\r' : { /* Already handled via \n */
return;
}
default: {
pt_bitmap += column;
*pt_bitmap = car | attribute;
if (++column == maxCol) endColumn();
else wr_cursor(row * maxCol + column,
ioCrtBaseAddr);
return;
}
}
}
/*-------------------------------------------------------------------------+
| Function: printLF
| Description: Print LF (Line Feed - '\n') character to display.
| Global Variables: cursRow.
| Arguments: None.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static inline void
printLF(void)
void
clear_screen()
{
cursRow++;
if (cursRow == videoRows)
{
cursRow--;
scrollUp(1);
}
updateVideoRamPtr();
} /* printLF */
/*-------------------------------------------------------------------------+
| Function: printCR
| Description: Print CR (Carriage Return - '\r') to display.
| Global Variables: cursCol.
| Arguments: None.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static inline void
printCR(void)
{
cursCol = 0;
updateVideoRamPtr();
} /* printCR */
/*-------------------------------------------------------------------------+
| Function: consPutc
| Description: Print a character to display at current position.
| Global Variables: videoRamPtr, videoRam.
| Arguments: c - character to write to display.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
static void
consPutc(char c)
{
switch (c)
{
case '\b': printBS(); break;
case '\t': printHT(); break;
case '\n': printLF(); break;
case '\r': printCR(); break;
default: printCHAR(c); break;
} /* switch */
setHardwareCursorPos(videoRamPtr - videoRam);
/* At current offset into videoRam */
} /* consPutc */
int i,j;
for (j = 0; j <= maxRow; j++) {
for (i = 0; i <= maxCol; i++) {
videoPutChar(' ');
}
}
column = 0;
row = 0;
}
/*-------------------------------------------------------------------------+
| Function: _IBMPC_outch
@@ -267,20 +152,41 @@ consPutc(char c)
void
_IBMPC_outch(char c)
{
consPutc(c);
videoPutChar(c);
} /* _IBMPC_outch */
/*-------------------------------------------------------------------------+
| Function: _IBMPC_initVideo
| Description: Video system initialization. Hook for any early setup.
| Global Variables: videoRows.
| Global Variables: bitMapBaseAddr, ioCrtBaseAddr, maxCol, maxRow, row
| column, attribute, nLines;
| Arguments: None.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
void
_IBMPC_initVideo(void)
{
scrollUp(videoRows); /* Clear entire screen */
setHardwareCursorPos(0); /* Cursor at upper left corner */
unsigned char* pt = (unsigned char*) (VIDEO_MODE_ADDR);
if (*pt == VGAMODE7) {
bitMapBaseAddr = (unsigned short*) V_MONO;
}
else {
bitMapBaseAddr = (unsigned short*) V_COLOR;
}
ioCrtBaseAddr = *(unsigned short*) DISPLAY_CRT_BASE_IO_ADDR;
maxCol = * (unsigned short*) NB_MAX_COL_ADDR;
maxRow = * (unsigned char*) NB_MAX_ROW_ADDR;
column = 0;
row = 0;
attribute = ((BLACK << 4) | WHITE)<<8;
nLines = 0;
clear_screen();
#ifdef DEBUG_EARLY_STAGE
printk("bitMapBaseAddr = %X, display controller base IO = %X\n",
(unsigned) bitMapBaseAddr,
(unsigned) ioCrtBaseAddr);
videoPrintf("maxCol = %d, maxRow = %d\n", (unsigned) maxCol, (unsigned) maxRow);
#endif
} /* _IBMPC_initVideo */

View File

@@ -8,7 +8,7 @@ VPATH = @srcdir@
RTEMS_ROOT = @top_srcdir@
PROJECT_ROOT = @PROJECT_ROOT@
H_FILES = $(srcdir)/bsp.h $(srcdir)/coverhd.h $(srcdir)/irq.h
H_FILES = $(srcdir)/bsp.h $(srcdir)/coverhd.h $(srcdir)/irq.h $(srcdir)/crt.h
#
# Equate files are for including from assembly preprocessed by

View File

@@ -10,6 +10,14 @@
|
| Instituto Superior Tecnico * Lisboa * PORTUGAL
+--------------------------------------------------------------------------+
| Modified by Eric Valette the 20/05/98 in order to add definitions used
| to enhance video putchar capabilities.
|
| Copyright (C) 1998 valette@crf.canon.fr
|
| Canon Centre Recherche France.
|
+--------------------------------------------------------------------------+
| Disclaimer:
|
| This file is provided "AS IS" without warranty of any kind, either
@@ -57,32 +65,9 @@ extern "C" {
/*-------------------------------------------------------------------------+
| Video (console) related constants.
+--------------------------------------------------------------------------*/
#define COLOUR 1 /* Assume colour console */
#if COLOUR
# define GDC_REG_PORT 0x3D4
# define GDC_VAL_PORT 0x3D5
# define TVRAM ((rtems_unsigned16 *)0xB8000)
#else
# define GDC_REG_PORT 0x3B4
# define GDC_VAL_PORT 0x3B5
# define TVRAM ((rtems_unsigned16 *)0xB0000)
#endif /* COLOUR */
/* Number of Video Lines & Columns */
#define MAX_COL 80
#ifdef RTEMS_VIDEO_80x50
#define MAX_ROW 50
#else
#define MAX_ROW 25
#endif /* RTEMS_VIDEO_80x50 */
#include <crt.h>
/*-------------------------------------------------------------------------+
| Constants relating to the 8254 (or 8253) programmable interval timers.
+--------------------------------------------------------------------------*/

View File

@@ -12,6 +12,11 @@
|
| Instituto Superior Tecnico * Lisboa * PORTUGAL
+--------------------------------------------------------------------------+
|
| Modified the 20/05/1998 by valette@crf.canon.fr in order to give a working
| example of eraly stage debugging via the DEBUG_EARLY_START define.
|
+--------------------------------------------------------------------------+
| Disclaimer:
|
| This file is provided "AS IS" without warranty of any kind, either
@@ -62,11 +67,39 @@ BEGIN_CODE
EXTERN (boot_card)
EXTERN (load_segments)
EXTERN (exit)
EXTERN (_IBMPC_initVideo)
EXTERN (debugPoolingGetChar)
/*
* In case it crash on your machine and this is not due
* to video mode set by the loader, you may try to define
* the follwoing variable
#define DEBUG_EARLY_START
*/
SYM (start):
nop
cli # DISABLE INTERRUPTS!!!
#ifdef DEBUG_EARLY_START
cld
/*
* Must get video attribute to have a working printk.
* Note that the following code assume we already have
* valid segments and a stack. It should be true for
* any loader starting RTEMS in protected mode (or
* at least I hope so : -)).
*/
call _IBMPC_initVideo
/*
* try printk and a getchar in polling mode ASAP
*/
pushl $welcome_msg
call printk
addl $4, esp
call debugPoolingGetChar
#endif
/*----------------------------------------------------------------------------+
| Load the segment registers (this is done by the board's BSP) and perform any
@@ -265,6 +298,14 @@ SYM (start_frame):
SYM (stack_start):
.long 0
#ifdef DEBUG_EARLY_START
PUBLIC (welcome_msg)
SYM (welcome_msg) :
.string "Ready to debug RTEMS ?\nEnter <CR>\n"
#endif
END_DATA
/*----------------------------------------------------------------------------+

View File

@@ -39,15 +39,14 @@
/*-------------------------------------------------------------------------+
| External Prototypes
+--------------------------------------------------------------------------*/
extern rtems_boolean _IBMPC_scankey(char *); /* define in 'inch.c' */
extern rtems_boolean _IBMPC_scankey(char *); /* defined in 'inch.c' */
/*-------------------------------------------------------------------------+
| Function: rtemsReboot
| Description: Reboot the PC.
| Description: Reboot the PC.
| Global Variables: None.
| Arguments: None.
| Returns: Nothing.
| Returns: Nothing.
+--------------------------------------------------------------------------*/
inline void rtemsReboot(void)
{

View File

@@ -165,18 +165,9 @@ else
AC_MSG_ERROR(no)
fi
dnl NOTE: host_os is automatically set by autoconf
if [[ "${program_prefix}" = "NONE" ]] ; then
if [[ "${target}" = "${host}" ]] ; then
program_prefix=
else
program_prefix=${target}-
fi
fi
RTEMS_TOOL_PREFIX
dnl check target cc
CC="$program_prefix"gcc
RTEMS_PROG_CC
dnl check if the compiler supports --specs
RTEMS_GCC_SPECS
@@ -190,25 +181,23 @@ if test "$RTEMS_USE_GCC272" != "yes" ; then
RTEMS_USE_GCC272=yes
fi
fi
test "$rtems_cv_gcc_pipe" = "yes" && CC_FOR_TARGET="$CC_FOR_TARGET --pipe"
dnl check for g++
if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
CXX="$program_prefix"g++
RTEMS_PROG_CXX
if test "$rtems_cv_prog_cc_cross" != "$rtems_cv_prog_cxx_cross"; then
AC_MSG_ERROR([***]
[Inconsistency in compiler configuration:]
[Target C compiler and Target C++ compiler]
[must both ether be cross compilers or native compilers]
[Hint: LD_LIBRARY_PATH ?] )
[Hint: If building a posix bsp: LD_LIBRARY_PATH?] )
fi
AC_PATH_PROG(CXX_FOR_TARGET,"$program_prefix"g++,no)
else
CXX_FOR_TARGET="no"
fi
RTEMS_CANONICALIZE_TOOLS
test "$rtems_cv_gcc_pipe" = "yes" && CC_FOR_TARGET="$CC_FOR_TARGET --pipe"
dnl check host cc
AC_PROG_CC