Mercurial > ecos
comparison packages/hal/sparc/leon/current/include/hal_diag.h @ 208:e0c0827131d1 ecos
Merge from eCos master repository on 2002-05-20-20:11:54-BST
| author | jlarmour |
|---|---|
| date | Mon, 20 May 2002 22:19:26 +0000 |
| parents | |
| children | d2c90368aeef |
comparison
equal
deleted
inserted
replaced
| 207:74c807ddde34 | 208:e0c0827131d1 |
|---|---|
| 1 #ifndef CYGONCE_HAL_HAL_DIAG_H | |
| 2 #define CYGONCE_HAL_HAL_DIAG_H | |
| 3 | |
| 4 /*============================================================================= | |
| 5 // | |
| 6 // hal_diag.h | |
| 7 // | |
| 8 // HAL Support for Kernel Diagnostic Routines | |
| 9 // | |
| 10 //============================================================================= | |
| 11 //####ECOSGPLCOPYRIGHTBEGIN#### | |
| 12 // ------------------------------------------- | |
| 13 // This file is part of eCos, the Embedded Configurable Operating System. | |
| 14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. | |
| 15 // | |
| 16 // eCos is free software; you can redistribute it and/or modify it under | |
| 17 // the terms of the GNU General Public License as published by the Free | |
| 18 // Software Foundation; either version 2 or (at your option) any later version. | |
| 19 // | |
| 20 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY | |
| 21 // WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 22 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 23 // for more details. | |
| 24 // | |
| 25 // You should have received a copy of the GNU General Public License along | |
| 26 // with eCos; if not, write to the Free Software Foundation, Inc., | |
| 27 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. | |
| 28 // | |
| 29 // As a special exception, if other files instantiate templates or use macros | |
| 30 // or inline functions from this file, or you compile this file and link it | |
| 31 // with other works to produce a work based on this file, this file does not | |
| 32 // by itself cause the resulting work to be covered by the GNU General Public | |
| 33 // License. However the source code for this file must still be made available | |
| 34 // in accordance with section (3) of the GNU General Public License. | |
| 35 // | |
| 36 // This exception does not invalidate any other reasons why a work based on | |
| 37 // this file might be covered by the GNU General Public License. | |
| 38 // | |
| 39 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. | |
| 40 // at http://sources.redhat.com/ecos/ecos-license | |
| 41 // ------------------------------------------- | |
| 42 //####ECOSGPLCOPYRIGHTEND#### | |
| 43 //============================================================================= | |
| 44 //#####DESCRIPTIONBEGIN#### | |
| 45 // | |
| 46 // Author(s): hmt | |
| 47 // Contributors: hmt | |
| 48 // Date: 1999-01-11 | |
| 49 // Purpose: HAL Support for Kernel Diagnostic Routines | |
| 50 // Description: Diagnostic routines for use during kernel development. | |
| 51 // Usage: #include <cyg/hal/hal_diag.h> | |
| 52 // | |
| 53 //####DESCRIPTIONEND#### | |
| 54 // | |
| 55 //===========================================================================*/ | |
| 56 | |
| 57 #include <pkgconf/hal.h> | |
| 58 | |
| 59 #include <cyg/infra/cyg_type.h> | |
| 60 | |
| 61 /*---------------------------------------------------------------------------*/ | |
| 62 | |
| 63 #define CYG_DIAG_USE_LEON | |
| 64 | |
| 65 /*---------------------------------------------------------------------------*/ | |
| 66 | |
| 67 #ifdef CYG_DIAG_USE_LEON | |
| 68 | |
| 69 /*---------------------------------------------------------------------------*/ | |
| 70 /* Register addresses */ | |
| 71 | |
| 72 #define SPARC_LEON_REG (0x80000000) | |
| 73 | |
| 74 /* These must be accessed word-wide to work! */ | |
| 75 #define SPARC_LEON_UART_IO( x ) ((cyg_uint32)(x)) | |
| 76 | |
| 77 #define SPARC_LEON_UART_A_RX ((volatile cyg_uint32 *)(SPARC_LEON_REG + 0x70)) | |
| 78 #define SPARC_LEON_UART_A_TX ((volatile cyg_uint32 *)(SPARC_LEON_REG + 0x70)) | |
| 79 #define SPARC_LEON_UART_STATUS ((volatile cyg_uint32 *)(SPARC_LEON_REG + 0x74)) | |
| 80 #define SPARC_LEON_UART_RXAMASK (0x00001) | |
| 81 #define SPARC_LEON_UART_TXAMASK (0x00006) | |
| 82 | |
| 83 | |
| 84 /*---------------------------------------------------------------------------*/ | |
| 85 | |
| 86 #define HAL_DIAG_INIT() | |
| 87 | |
| 88 #define HAL_DIAG_WRITE_CHAR(_c_) \ | |
| 89 { \ | |
| 90 if( 1 || _c_ != '\r' ) \ | |
| 91 { \ | |
| 92 while( (SPARC_LEON_UART_TXAMASK & *SPARC_LEON_UART_STATUS) == 0 ) \ | |
| 93 continue; \ | |
| 94 *SPARC_LEON_UART_A_TX = SPARC_LEON_UART_IO(_c_); \ | |
| 95 } \ | |
| 96 } | |
| 97 | |
| 98 #define HAL_DIAG_READ_CHAR(_c_) \ | |
| 99 { \ | |
| 100 while( (SPARC_LEON_UART_RXAMASK & *SPARC_LEON_UART_STATUS) == 0 ) \ | |
| 101 continue; \ | |
| 102 _c_ = (char)*SPARC_LEON_UART_A_TX; \ | |
| 103 } | |
| 104 | |
| 105 #define XHAL_DIAG_WRITE_CHAR(_c_) \ | |
| 106 { \ | |
| 107 if( _c_ != '\r' ) \ | |
| 108 { \ | |
| 109 *SPARC_LEON_UART_A_TX = SPARC_LEON_UART_IO(_c_); \ | |
| 110 } \ | |
| 111 } | |
| 112 | |
| 113 #define XHAL_DIAG_READ_CHAR(_c_) \ | |
| 114 { \ | |
| 115 _c_ = (char)*SPARC_LEON_UART_A_TX; \ | |
| 116 } | |
| 117 | |
| 118 #else | |
| 119 /*---------------------------------------------------------------------------*/ | |
| 120 /* There is no diagnostic output on LEON processor */ | |
| 121 | |
| 122 #define HAL_DIAG_INIT() | |
| 123 | |
| 124 #define HAL_DIAG_WRITE_CHAR(_c_) | |
| 125 | |
| 126 #define HAL_DIAG_READ_CHAR(_c_) (_c_) = 0 | |
| 127 | |
| 128 #endif | |
| 129 | |
| 130 /*---------------------------------------------------------------------------*/ | |
| 131 /* end of hal_diag.h */ | |
| 132 #endif /* CYGONCE_HAL_HAL_DIAG_H */ |
