OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [common/] [current/] [tests/] [cpp1.c] - Blame information for rev 786

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
/*=================================================================
2
//
3
//        cpp1.c
4
//
5
//        cpp arithmetic bug regression test
6
//
7
//==========================================================================
8
// ####ECOSGPLCOPYRIGHTBEGIN####
9
// -------------------------------------------
10
// This file is part of eCos, the Embedded Configurable Operating System.
11
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
12
//
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
16
// version.
17
//
18
// eCos is distributed in the hope that it will be useful, but WITHOUT
19
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21
// for more details.
22
//
23
// You should have received a copy of the GNU General Public License
24
// along with eCos; if not, write to the Free Software Foundation, Inc.,
25
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
26
//
27
// As a special exception, if other files instantiate templates or use
28
// macros or inline functions from this file, or you compile this file
29
// and link it with other works to produce a work based on this file,
30
// this file does not by itself cause the resulting work to be covered by
31
// the GNU General Public License. However the source code for this file
32
// must still be made available in accordance with section (3) of the GNU
33
// General Public License v2.
34
//
35
// This exception does not invalidate any other reasons why a work based
36
// on this file might be covered by the GNU General Public License.
37
// -------------------------------------------
38
// ####ECOSGPLCOPYRIGHTEND####
39
//==========================================================================
40
//#####DESCRIPTIONBEGIN####
41
//
42
// Author(s):     hmt
43
// Contributors:  hmt
44
// Date:          2001-04-30
45
//####DESCRIPTIONEND####
46
*/
47
 
48
#include <pkgconf/hal.h>
49
 
50
#include <pkgconf/infra.h>
51
 
52
#include <cyg/infra/testcase.h>
53
 
54
// -----------------------------------------------------------------
55
// This is smaller than 2048.
56
// Unless the parser binds '+' too strongly because it is after a ket, so
57
// it is mistaken for unary plus, when (4 * 20 + 2) * 4 * 20 is larger.
58
#define CYGNUM_HAL_STACK_SIZE_MINIMUM ((4 * 20) + 2 * 4 * 20)
59
 
60
#define CYGNUM_UITRON_STACK_SIZE (2048)
61
 
62
#ifdef CYGNUM_HAL_STACK_SIZE_MINIMUM
63
# ifdef CYGNUM_UITRON_STACK_SIZE
64
#  if CYGNUM_UITRON_STACK_SIZE < CYGNUM_HAL_STACK_SIZE_MINIMUM
65
 
66
// then override the configured stack size
67
#   undef CYGNUM_UITRON_STACK_SIZE
68
#   define CYGNUM_UITRON_STACK_SIZE CYGNUM_HAL_STACK_SIZE_MINIMUM
69
 
70
#  endif // CYGNUM_UITRON_STACK_SIZE < CYGNUM_HAL_STACK_SIZE_MINIMUM
71
# endif // CYGNUM_UITRON_STACK_SIZE
72
#endif // CYGNUM_HAL_STACK_SIZE_MINIMUM
73
 
74
 
75
// This tests for the bug per se:
76
int i = CYGNUM_UITRON_STACK_SIZE;
77
 
78
// This tests the workaround independently of more complex context:
79
#define MAX(_x_,_y_) ((_x_) > (_y_) ? (_x_) : (_y_))
80
 
81
static char stack1[
82
    MAX(
83
        CYGNUM_HAL_STACK_SIZE_MINIMUM,
84
        2048)
85
    ];
86
 
87
// Better to report a fully-fledged failure and test the workaround than
88
// fail early.
89
#if 0
90
# if CYGNUM_UITRON_STACK_SIZE != 2048
91
#  error FAIL: CPP '+' binding bug detected
92
# endif
93
#endif
94
 
95
// -------------------------------------------------------------------------
96
externC void
97
cyg_start( void )
98
{
99
    CYG_TEST_INIT();
100
    CYG_TEST_PASS("CPP '+' binding test compiled OK");
101
    CYG_TEST_PASS_FAIL( 2048 == i, "initialized i should be 2048" );
102
    CYG_TEST_PASS_FAIL( 2048 == sizeof( stack1 ),
103
                        "workaround: sizeof( stack1 ) should be 2048" );
104
    CYG_TEST_EXIT("All done");
105
}
106
 
107
// -------------------------------------------------------------------------
108
/* EOF cpp1.c */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.