1 /*=================================================================
5 // SPARClite HAL exception and register manipulation test
7 //==========================================================================
8 //####ECOSGPLCOPYRIGHTBEGIN####
9 // -------------------------------------------
10 // This file is part of eCos, the Embedded Configurable Operating System.
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
13 // eCos is free software; you can redistribute it and/or modify it under
14 // the terms of the GNU General Public License as published by the Free
15 // Software Foundation; either version 2 or (at your option) any later version.
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 // You should have received a copy of the GNU General Public License along
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26 // As a special exception, if other files instantiate templates or use macros
27 // or inline functions from this file, or you compile this file and link it
28 // with other works to produce a work based on this file, this file does not
29 // by itself cause the resulting work to be covered by the GNU General Public
30 // License. However the source code for this file must still be made available
31 // in accordance with section (3) of the GNU General Public License.
33 // This exception does not invalidate any other reasons why a work based on
34 // this file might be covered by the GNU General Public License.
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
37 // at http://sources.redhat.com/ecos/ecos-license/
38 // -------------------------------------------
39 //####ECOSGPLCOPYRIGHTEND####
40 //==========================================================================
41 //#####DESCRIPTIONBEGIN####
44 // Contributors: dsm, nickg
46 //####DESCRIPTIONEND####
49 #include <pkgconf/system.h>
51 #include <pkgconf/hal.h>
53 #include <cyg/infra/cyg_type.h>
55 #include <cyg/infra/cyg_ass.h>
57 #include <cyg/infra/testcase.h>
59 #include <cyg/hal/hal_arch.h>
60 #include <cyg/hal/hal_intr.h>
61 #include <cyg/hal/hal_diag.h>
62 #include <cyg/hal/hal_clock.h>
64 #include <pkgconf/infra.h>
66 #include <cyg/infra/diag.h>
68 // -------------------------------------------------------------------------
70 cyg_uint32 fact( cyg_uint32 arg )
72 cyg_uint32 ret = (arg < 2) ? 1 : (arg * fact( arg - 1 ));
77 // -------------------------------------------------------------------------
81 #define led (*(volatile char *)(0x02000003))
84 int sequence[] = { 0, 0, 1, 1, 2, 3, 4, 5, 6, 6, 7, 7, 7, 7, 6, 6, 5, 4, 3, 2, 1, 1, 0, 0,
87 int nseq=(sizeof(sequence)/sizeof(sequence[0])-1);
89 void set_leds( void ) // and decay them too
97 for (bit=0; bit<8; bit++)
124 for ( z = 0; z < 100; z++ ) {
127 for (op=0; op<nseq; op++) {
128 HAL_DIAG_WRITE_CHAR( 'A' + op );
129 level[sequence[op]] = bright;
137 CYG_TEST_FAIL_EXIT( "Factorial wrong" );
142 HAL_DIAG_WRITE_CHAR( '\n' );
143 HAL_DIAG_WRITE_CHAR( '\r' );
145 CYG_TEST_PASS( "Stack thrashed OK" );
149 // -------------------------------------------------------------------------
153 cyg_user_start( void )
159 CYG_TEST_INFO( "cyg_user_start()" );
160 HAL_ENABLE_INTERRUPTS();
162 CYG_TEST_EXIT( "LED bibbling and stack thrashing test" );
165 // -------------------------------------------------------------------------