URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/rtos/rtems/c/src/tests/sptests/sp19
- from Rev 30 to Rev 173
- ↔ Reverse comparison
Rev 30 → Rev 173
/inttest.h
0,0 → 1,148
/* inttest.h |
* |
* XXX: ??? |
* This include file contains the CPU dependent implementation |
* of the following routines needed to test RTEMS floating |
* point support: |
* INTEGER_load( &context ) |
* INTEGER_check( &context ) |
* |
* INTEGER_load - loads the specified floating point context |
* INTEGER_check - checks the specified floating point context |
* |
* NOTE: These routines are VERY CPU dependent and are thus |
* located in in the CPU dependent include file |
* inttest.h. These routines form the core of the |
* floating point context switch test. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* 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: inttest.h,v 1.2 2001-09-27 12:02:34 chris Exp $ |
*/ |
|
|
#ifndef __INTEGER_TEST_h |
#define __INTEGER_TEST_h |
|
#include <stdio.h> |
#define REG_VARIABLE rtems_unsigned32 |
|
#define INTEGER_DECLARE \ |
REG_VARIABLE int01 = 1; \ |
REG_VARIABLE int02 = 2; \ |
REG_VARIABLE int03 = 3; \ |
REG_VARIABLE int04 = 4; \ |
REG_VARIABLE int05 = 5; \ |
REG_VARIABLE int06 = 6; \ |
REG_VARIABLE int07 = 7; \ |
REG_VARIABLE int08 = 8; \ |
REG_VARIABLE int09 = 9; \ |
REG_VARIABLE int10 = 10; \ |
REG_VARIABLE int11 = 11; \ |
REG_VARIABLE int12 = 12; \ |
REG_VARIABLE int13 = 13; \ |
REG_VARIABLE int14 = 14; \ |
REG_VARIABLE int15 = 15; \ |
REG_VARIABLE int16 = 16; \ |
REG_VARIABLE int17 = 17; \ |
REG_VARIABLE int18 = 18; \ |
REG_VARIABLE int19 = 19; \ |
REG_VARIABLE int20 = 20; \ |
REG_VARIABLE int21 = 21; \ |
REG_VARIABLE int22 = 22; \ |
REG_VARIABLE int23 = 23; \ |
REG_VARIABLE int24 = 24; \ |
REG_VARIABLE int25 = 25; \ |
REG_VARIABLE int26 = 26; \ |
REG_VARIABLE int27 = 27; \ |
REG_VARIABLE int28 = 28; \ |
REG_VARIABLE int29 = 29; \ |
REG_VARIABLE int30 = 30; \ |
REG_VARIABLE int31 = 31; \ |
REG_VARIABLE int32 = 32 |
|
#define INTEGER_LOAD( _factor ) \ |
do { \ |
int01 += _factor; \ |
int02 += _factor; \ |
int03 += _factor; \ |
int04 += _factor; \ |
int05 += _factor; \ |
int06 += _factor; \ |
int07 += _factor; \ |
int08 += _factor; \ |
int09 += _factor; \ |
int10 += _factor; \ |
int11 += _factor; \ |
int12 += _factor; \ |
int13 += _factor; \ |
int14 += _factor; \ |
int15 += _factor; \ |
int16 += _factor; \ |
int17 += _factor; \ |
int18 += _factor; \ |
int19 += _factor; \ |
int20 += _factor; \ |
int21 += _factor; \ |
int22 += _factor; \ |
int23 += _factor; \ |
int24 += _factor; \ |
int25 += _factor; \ |
int26 += _factor; \ |
int27 += _factor; \ |
int28 += _factor; \ |
int29 += _factor; \ |
int30 += _factor; \ |
int31 += _factor; \ |
int32 += _factor; \ |
} while (0) |
|
#define INTEGER_CHECK_ONE( _v, _base, _factor ) \ |
if ( (_v) != ((_base) + (_factor)) ) { \ |
printf("%d: " #_v " wrong -- (0x%x not 0x%x)\n", \ |
task_index, (_v), (_base + _factor)); \ |
} |
|
|
#define INTEGER_CHECK( _factor ) \ |
do { \ |
INTEGER_CHECK_ONE( int01, 1, (_factor) ); \ |
INTEGER_CHECK_ONE( int02, 2, (_factor) ); \ |
INTEGER_CHECK_ONE( int03, 3, (_factor) ); \ |
INTEGER_CHECK_ONE( int04, 4, (_factor) ); \ |
INTEGER_CHECK_ONE( int05, 5, (_factor) ); \ |
INTEGER_CHECK_ONE( int06, 6, (_factor) ); \ |
INTEGER_CHECK_ONE( int07, 7, (_factor) ); \ |
INTEGER_CHECK_ONE( int08, 8, (_factor) ); \ |
INTEGER_CHECK_ONE( int09, 9, (_factor) ); \ |
INTEGER_CHECK_ONE( int10, 10, (_factor) ); \ |
INTEGER_CHECK_ONE( int11, 11, (_factor) ); \ |
INTEGER_CHECK_ONE( int12, 12, (_factor) ); \ |
INTEGER_CHECK_ONE( int13, 13, (_factor) ); \ |
INTEGER_CHECK_ONE( int14, 14, (_factor) ); \ |
INTEGER_CHECK_ONE( int15, 15, (_factor) ); \ |
INTEGER_CHECK_ONE( int16, 16, (_factor) ); \ |
INTEGER_CHECK_ONE( int17, 17, (_factor) ); \ |
INTEGER_CHECK_ONE( int18, 18, (_factor) ); \ |
INTEGER_CHECK_ONE( int19, 19, (_factor) ); \ |
INTEGER_CHECK_ONE( int20, 20, (_factor) ); \ |
INTEGER_CHECK_ONE( int21, 21, (_factor) ); \ |
INTEGER_CHECK_ONE( int22, 22, (_factor) ); \ |
INTEGER_CHECK_ONE( int23, 23, (_factor) ); \ |
INTEGER_CHECK_ONE( int24, 24, (_factor) ); \ |
INTEGER_CHECK_ONE( int25, 25, (_factor) ); \ |
INTEGER_CHECK_ONE( int26, 26, (_factor) ); \ |
INTEGER_CHECK_ONE( int27, 27, (_factor) ); \ |
INTEGER_CHECK_ONE( int28, 28, (_factor) ); \ |
INTEGER_CHECK_ONE( int29, 29, (_factor) ); \ |
INTEGER_CHECK_ONE( int30, 30, (_factor) ); \ |
INTEGER_CHECK_ONE( int31, 31, (_factor) ); \ |
INTEGER_CHECK_ONE( int32, 32, (_factor) ); \ |
} while (0) |
|
#endif |
/sp19.doc
0,0 → 1,22
# |
# $Id: sp19.doc,v 1.6 1999/11/17 17:51:33 joel Exp $ |
# |
# COPYRIGHT (c) 1989-1999. |
# On-Line Applications Research Corporation (OAR). |
# |
# 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. |
# |
|
|
This file describes the directives and concepts tested by this test set. |
|
test set name: test19 |
|
directives: |
|
concepts: |
|
a. Verifies system can dispatch a mixture of floating point and |
non-floating point tasks. |
/init.c
0,0 → 1,149
/* Init |
* |
* This routine is the initialization task for this test program. |
* It is a user initialization task and has the responsibility for creating |
* and starting the tasks that make up the test. If the time of day |
* clock is required for the test, it should also be set to a known |
* value by this function. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* 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: init.c,v 1.2 2001-09-27 12:02:34 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
|
rtems_task Init( |
rtems_task_argument argument |
) |
{ |
rtems_status_code status; |
|
puts( "\n\n*** TEST 19 ***" ); |
|
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' ); |
Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' ); |
Task_name[ 3 ] = rtems_build_name( 'T', 'A', '3', ' ' ); |
Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' ); |
Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' ); |
Task_name[ 6 ] = rtems_build_name( 'F', 'P', '1', ' ' ); |
|
status = rtems_task_create( |
Task_name[ 1 ], |
2, |
RTEMS_MINIMUM_STACK_SIZE * 4, |
RTEMS_DEFAULT_MODES, |
RTEMS_FLOATING_POINT, |
&Task_id[ 1 ] |
); |
directive_failed( status, "rtems_task_create of TA1" ); |
|
status = rtems_task_create( |
Task_name[ 2 ], |
2, |
RTEMS_MINIMUM_STACK_SIZE * 4, |
RTEMS_DEFAULT_MODES, |
RTEMS_DEFAULT_ATTRIBUTES, |
&Task_id[ 2 ] |
); |
directive_failed( status, "rtems_task_create of TA2" ); |
|
status = rtems_task_create( |
Task_name[ 3 ], |
2, |
RTEMS_MINIMUM_STACK_SIZE * 4, |
RTEMS_DEFAULT_MODES, |
RTEMS_DEFAULT_ATTRIBUTES, |
&Task_id[ 3 ] |
); |
directive_failed( status, "rtems_task_create of TA3" ); |
|
status = rtems_task_create( |
Task_name[ 4 ], |
2, |
RTEMS_MINIMUM_STACK_SIZE * 4, |
RTEMS_DEFAULT_MODES, |
RTEMS_FLOATING_POINT, |
&Task_id[ 4 ] |
); |
directive_failed( status, "rtems_task_create of TA4" ); |
|
status = rtems_task_create( |
Task_name[ 5 ], |
2, |
RTEMS_MINIMUM_STACK_SIZE * 4, |
RTEMS_DEFAULT_MODES, |
RTEMS_FLOATING_POINT, |
&Task_id[ 5 ] |
); |
directive_failed( status, "rtems_task_create of TA5" ); |
|
status = rtems_task_create( |
Task_name[ 6 ], |
1, |
RTEMS_MINIMUM_STACK_SIZE * 4, |
RTEMS_DEFAULT_MODES, |
RTEMS_FLOATING_POINT, |
&Task_id[ 6 ] |
); |
directive_failed( status, "rtems_task_create of FP1" ); |
|
status = rtems_task_start( Task_id[ 6 ], First_FP_task, 0 ); |
directive_failed( status, "rtems_task_start of FP1" ); |
|
status = rtems_task_start( Task_id[ 1 ], Task_1, 0 ); |
directive_failed( status, "rtems_task_start of TA1" ); |
|
status = rtems_task_start( Task_id[ 2 ], Task_1, 0 ); |
directive_failed( status, "rtems_task_start of TA2" ); |
|
status = rtems_task_start( Task_id[ 3 ], Task_1, 0 ); |
directive_failed( status, "rtems_task_start of TA3" ); |
|
status = rtems_task_start( Task_id[ 4 ], FP_task, 0 ); |
directive_failed( status, "rtems_task_start of TA4" ); |
|
status = rtems_task_start( Task_id[ 5 ], FP_task, 0 ); |
directive_failed( status, "rtems_task_create of TA5" ); |
|
/* |
* Load "task dependent factors" in the context areas |
*/ |
|
|
FP_factors[0] = 0.0; |
FP_factors[1] = 1000.1; |
FP_factors[2] = 2000.2; |
FP_factors[3] = 3000.3; |
FP_factors[4] = 4000.4; |
FP_factors[5] = 5000.5; |
FP_factors[6] = 6000.6; |
FP_factors[7] = 7000.7; |
FP_factors[8] = 8000.8; |
FP_factors[9] = 9000.9; |
|
INTEGER_factors[0] = 0x0000; |
INTEGER_factors[1] = 0x1000; |
INTEGER_factors[2] = 0x2000; |
INTEGER_factors[3] = 0x3000; |
INTEGER_factors[4] = 0x4000; |
INTEGER_factors[5] = 0x5000; |
INTEGER_factors[6] = 0x6000; |
INTEGER_factors[7] = 0x7000; |
INTEGER_factors[8] = 0x8000; |
INTEGER_factors[9] = 0x9000; |
|
status = rtems_task_delete( RTEMS_SELF ); |
directive_failed( status, "rtems_task_delete of TA1" ); |
} |
/task1.c
0,0 → 1,58
/* Task_1 |
* |
* This routine serves as a test task. It verifies the basic task |
* switching capabilities of the executive. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* 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: task1.c,v 1.2 2001-09-27 12:02:34 chris Exp $ |
*/ |
|
#include "system.h" |
#include "inttest.h" |
|
rtems_task Task_1( |
rtems_task_argument argument |
) |
{ |
rtems_status_code status; |
rtems_id tid; |
rtems_time_of_day time; |
rtems_unsigned32 task_index; |
INTEGER_DECLARE; |
|
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); |
directive_failed( status, "rtems_task_ident" ); |
|
task_index = task_number( tid ); |
|
INTEGER_LOAD( INTEGER_factors[ task_index ] ); |
|
put_name( Task_name[ task_index ], FALSE ); |
printf( " - integer base = (0x%x)\n", INTEGER_factors[ task_index ] ); |
|
while( FOREVER ) { |
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time ); |
directive_failed( status, "rtems_clock_get" ); |
|
put_name( Task_name[ task_number( tid ) ], FALSE ); |
print_time( " - rtems_clock_get - ", &time, "\n" ); |
|
INTEGER_CHECK( INTEGER_factors[ task_index ] ); |
|
status = rtems_task_wake_after( |
( task_number( tid ) ) * 5 * TICKS_PER_SECOND |
); |
directive_failed( status, "rtems_task_wake_after" ); |
} |
} |
/first.c
0,0 → 1,65
/* First_FP_task |
* |
* This routine serves as a floating point test task. It verifies the |
* basic task switching capabilities of the executive when floating |
* point is configured. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* 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: first.c,v 1.2 2001-09-27 12:02:34 chris Exp $ |
*/ |
|
#include "system.h" |
#include "fptest.h" |
#include "inttest.h" |
|
rtems_task First_FP_task( |
rtems_task_argument argument |
) |
{ |
rtems_status_code status; |
rtems_id tid; |
rtems_time_of_day time; |
rtems_unsigned32 task_index; |
INTEGER_DECLARE; |
FP_DECLARE; |
|
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); |
directive_failed( status, "rtems_task_ident" ); |
|
task_index = task_number( tid ); |
|
INTEGER_LOAD( INTEGER_factors[ task_index ] ); |
FP_LOAD( FP_factors[ task_index ] ); |
|
put_name( Task_name[ task_index ], FALSE ); |
printf( " - integer base = (0x%x)\n", INTEGER_factors[ task_index ] ); |
put_name( Task_name[ task_index ], FALSE ); |
#if ( RTEMS_HAS_HARDWARE_FP == 1 ) |
printf( " - float base = (%g)\n", FP_factors[ task_index ] ); |
#else |
printf( " - float base = (NA)\n" ); |
#endif |
|
if ( argument == 0 ) { |
status = rtems_task_restart( RTEMS_SELF, 1 ); |
directive_failed( status, "rtems_task_restart of RTEMS_SELF" ); |
} else { |
build_time( &time, 12, 31, 1988, 9, 0, 0, 0 ); |
status = rtems_clock_set( &time ); |
directive_failed( status, "rtems_clock_set" ); |
|
status = rtems_task_delete( RTEMS_SELF ); |
directive_failed( status, "rtems_task_delete of RTEMS_SELF" ); |
} |
} |
/Makefile.am
0,0 → 1,38
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:34 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = sp19 |
|
MANAGERS = io |
|
C_FILES = init.c first.c fptask.c task1.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
H_FILES = system.h fptest.h inttest.h |
noinst_HEADERS = $(H_FILES) |
|
DOCTYPES = scn doc |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
PGM = ${ARCH}/$(TEST).exe |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/sptests.am |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/fptask.c
0,0 → 1,97
/* FP_task |
* |
* This routine serves as a floating point test task. It verifies the |
* basic task switching capabilities of the executive when floating |
* point is configured. |
* |
* Input parameters: |
* argument - task argument |
* |
* Output parameters: NONE |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* 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: fptask.c,v 1.2 2001-09-27 12:02:34 chris Exp $ |
*/ |
|
#include "system.h" |
#include "fptest.h" |
#include "inttest.h" |
|
rtems_task FP_task( |
rtems_task_argument argument |
) |
{ |
rtems_status_code status; |
rtems_id tid; |
rtems_time_of_day time; |
rtems_unsigned32 task_index; |
rtems_unsigned32 previous_seconds; |
INTEGER_DECLARE; |
FP_DECLARE; |
|
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid ); |
directive_failed( status, "rtems_task_ident of self" ); |
|
task_index = task_number( tid ); |
|
INTEGER_LOAD( INTEGER_factors[ task_index ] ); |
FP_LOAD( FP_factors[ task_index ] ); |
|
put_name( Task_name[ task_index ], FALSE ); |
printf( " - integer base = (0x%x)\n", INTEGER_factors[ task_index ] ); |
put_name( Task_name[ task_index ], FALSE ); |
#if ( RTEMS_HAS_HARDWARE_FP == 1 ) |
printf( " - float base = (%g)\n", FP_factors[ task_index ] ); |
#else |
printf( " - float base = (NA)\n" ); |
#endif |
|
previous_seconds = -1; |
|
while( FOREVER ) { |
|
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time ); |
directive_failed( status, "rtems_clock_get" ); |
|
if ( time.second >= 16 ) { |
|
if ( task_number( tid ) == 4 ) { |
puts( "TA4 - rtems_task_delete - self" ); |
status = rtems_task_delete( RTEMS_SELF ); |
directive_failed( status, "rtems_task_delete of TA4" ); |
} |
puts( "TA5 - rtems_task_delete - TA3" ); |
status = rtems_task_delete( Task_id[ 3 ] ); |
directive_failed( status, "rtems_task_delete of TA3" ); |
|
puts( "*** END OF TEST 19 *** " ); |
exit( 0 ); |
} |
|
if (previous_seconds != time.second) |
{ |
put_name( Task_name[ task_index ], FALSE ); |
print_time( " - rtems_clock_get - ", &time, "\n" ); |
previous_seconds = time.second; |
} |
|
INTEGER_CHECK( INTEGER_factors[ task_index ] ); |
FP_CHECK( FP_factors[ task_index ] ); |
|
/* for the first 4 seconds we spin as fast as possible |
* so that we likely are interrupted |
* After that, we go to sleep for a second at a time |
*/ |
if (time.second >= 4) |
{ |
status = rtems_task_wake_after( TICKS_PER_SECOND ); |
directive_failed( status, "rtems_task_wake_after" ); |
} |
} |
} |
/system.h
0,0 → 1,58
/* system.h |
* |
* This include file contains information that is included in every |
* function in the test set. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* 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: system.h,v 1.2 2001-09-27 12:02:34 chris Exp $ |
*/ |
|
#include <tmacros.h> |
|
/* functions */ |
|
rtems_task Init( |
rtems_task_argument argument |
); |
|
rtems_task First_FP_task( |
rtems_task_argument argument |
); |
|
rtems_task FP_task( |
rtems_task_argument argument |
); |
|
rtems_task Task_1( |
rtems_task_argument argument |
); |
|
/* configuration information */ |
|
#define CONFIGURE_INIT_TASK_ATTRIBUTES RTEMS_FLOATING_POINT |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
|
#define CONFIGURE_MAXIMUM_TASKS 7 |
|
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE |
|
#define CONFIGURE_EXTRA_TASK_STACKS (18 * RTEMS_MINIMUM_STACK_SIZE) |
|
#include <confdefs.h> |
|
/* global variables */ |
|
TEST_EXTERN rtems_id Task_id[ 7 ]; /* array of task ids */ |
TEST_EXTERN rtems_id Task_name[ 7 ]; /* array of task names */ |
|
TEST_EXTERN rtems_double FP_factors[ 10 ]; /* FP "uniqueness" factors */ |
TEST_EXTERN rtems_unsigned32 INTEGER_factors[ 10 ]; /* INT "uniqueness" factors */ |
/* end of include file */ |
/fptest.h
0,0 → 1,171
/* fptest.h |
* |
* This include file contains the CPU dependent implementation |
* of the following routines needed to test RTEMS floating |
* point support: |
* FP_load( &context ) |
* FP_check( &context ) |
* |
* FP_load - loads the specified floating point context |
* FP_check - checks the specified floating point context |
* |
* NOTE: These routines are VERY CPU dependent and are thus |
* located in in the CPU dependent include file |
* fptest.h. These routines form the core of the |
* floating point context switch test. |
* |
* COPYRIGHT (c) 1989-1999. |
* On-Line Applications Research Corporation (OAR). |
* |
* 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: fptest.h,v 1.2 2001-09-27 12:02:34 chris Exp $ |
*/ |
|
|
#ifndef __FPTEST_h |
#define __FPTEST_h |
|
#include <stdio.h> |
|
#ifndef RTEMS_HAS_HARDWARE_FP |
#error "This CPU does not have RTEMS_HAS_HARDWARE_FP defined" |
#endif |
|
#if ( RTEMS_HAS_HARDWARE_FP == FALSE ) |
|
/* |
* The following is useless except to avoid some warnings. |
*/ |
|
#define FP_DECLARE unsigned int fp01 = 0; |
#define FP_LOAD( _factor ) fp01 = 2; |
#define FP_CHECK( _factor ) \ |
if ( fp01 != 2 ) \ |
printf("%d: single integer is wrong -- (%d != 2) \n", \ |
task_index, fp01 ); \ |
|
#else |
|
#define FP_DECLARE \ |
double fp01 = 1.0; \ |
double fp02 = 2.0; \ |
double fp03 = 3.0; \ |
double fp04 = 4.0; \ |
double fp05 = 5.0; \ |
double fp06 = 6.0; \ |
double fp07 = 7.0; \ |
double fp08 = 8.0; \ |
double fp09 = 9.0; \ |
double fp10 = 10.0; \ |
double fp11 = 11.0; \ |
double fp12 = 12.0; \ |
double fp13 = 13.0; \ |
double fp14 = 14.0; \ |
double fp15 = 15.0; \ |
double fp16 = 16.0; \ |
double fp17 = 17.0; \ |
double fp18 = 18.0; \ |
double fp19 = 19.0; \ |
double fp20 = 20.0; \ |
double fp21 = 21.0; \ |
double fp22 = 22.0; \ |
double fp23 = 23.0; \ |
double fp24 = 24.0; \ |
double fp25 = 25.0; \ |
double fp26 = 26.0; \ |
double fp27 = 27.0; \ |
double fp28 = 28.0; \ |
double fp29 = 29.0; \ |
double fp30 = 30.0; \ |
double fp31 = 31.0; \ |
double fp32 = 32.0 |
|
#define FP_LOAD( _factor ) \ |
do { \ |
fp01 += _factor; \ |
fp02 += _factor; \ |
fp03 += _factor; \ |
fp04 += _factor; \ |
fp05 += _factor; \ |
fp06 += _factor; \ |
fp07 += _factor; \ |
fp08 += _factor; \ |
fp09 += _factor; \ |
fp10 += _factor; \ |
fp11 += _factor; \ |
fp12 += _factor; \ |
fp13 += _factor; \ |
fp14 += _factor; \ |
fp15 += _factor; \ |
fp16 += _factor; \ |
fp17 += _factor; \ |
fp18 += _factor; \ |
fp19 += _factor; \ |
fp20 += _factor; \ |
fp21 += _factor; \ |
fp22 += _factor; \ |
fp23 += _factor; \ |
fp24 += _factor; \ |
fp25 += _factor; \ |
fp26 += _factor; \ |
fp27 += _factor; \ |
fp28 += _factor; \ |
fp29 += _factor; \ |
fp30 += _factor; \ |
fp31 += _factor; \ |
fp32 += _factor; \ |
} while (0) |
|
#define EPSILON (0.0005) |
#define FPABS(d) (((d) < 0.0) ? -(d) : (d)) |
#define FPNEQ(a,b) (FPABS((a)-(b)) > EPSILON) |
|
#define FP_CHECK_ONE( _v, _base, _factor ) \ |
if ( FPNEQ( (_v), ((_base) + (_factor)) ) ) { \ |
printf("%d: " #_v " wrong -- (%g not %g)\n", \ |
task_index, (_v), (_base + _factor)); \ |
} |
|
|
#define FP_CHECK( _factor ) \ |
do { \ |
FP_CHECK_ONE( fp01, 1.0, (_factor) ); \ |
FP_CHECK_ONE( fp02, 2.0, (_factor) ); \ |
FP_CHECK_ONE( fp03, 3.0, (_factor) ); \ |
FP_CHECK_ONE( fp04, 4.0, (_factor) ); \ |
FP_CHECK_ONE( fp05, 5.0, (_factor) ); \ |
FP_CHECK_ONE( fp06, 6.0, (_factor) ); \ |
FP_CHECK_ONE( fp07, 7.0, (_factor) ); \ |
FP_CHECK_ONE( fp08, 8.0, (_factor) ); \ |
FP_CHECK_ONE( fp09, 9.0, (_factor) ); \ |
FP_CHECK_ONE( fp10, 10.0, (_factor) ); \ |
FP_CHECK_ONE( fp11, 11.0, (_factor) ); \ |
FP_CHECK_ONE( fp12, 12.0, (_factor) ); \ |
FP_CHECK_ONE( fp13, 13.0, (_factor) ); \ |
FP_CHECK_ONE( fp14, 14.0, (_factor) ); \ |
FP_CHECK_ONE( fp15, 15.0, (_factor) ); \ |
FP_CHECK_ONE( fp16, 16.0, (_factor) ); \ |
FP_CHECK_ONE( fp17, 17.0, (_factor) ); \ |
FP_CHECK_ONE( fp18, 18.0, (_factor) ); \ |
FP_CHECK_ONE( fp19, 19.0, (_factor) ); \ |
FP_CHECK_ONE( fp20, 20.0, (_factor) ); \ |
FP_CHECK_ONE( fp21, 21.0, (_factor) ); \ |
FP_CHECK_ONE( fp22, 22.0, (_factor) ); \ |
FP_CHECK_ONE( fp23, 23.0, (_factor) ); \ |
FP_CHECK_ONE( fp24, 24.0, (_factor) ); \ |
FP_CHECK_ONE( fp25, 25.0, (_factor) ); \ |
FP_CHECK_ONE( fp26, 26.0, (_factor) ); \ |
FP_CHECK_ONE( fp27, 27.0, (_factor) ); \ |
FP_CHECK_ONE( fp28, 28.0, (_factor) ); \ |
FP_CHECK_ONE( fp29, 29.0, (_factor) ); \ |
FP_CHECK_ONE( fp30, 30.0, (_factor) ); \ |
FP_CHECK_ONE( fp31, 31.0, (_factor) ); \ |
FP_CHECK_ONE( fp32, 32.0, (_factor) ); \ |
} while (0) |
|
#endif |
|
#endif |
/sp19.scn
0,0 → 1,50
*** TEST 19 *** |
FP1 - integer base = (0x6000) |
FP1 - float base = (6000.6) |
FP1 - integer base = (0x6000) |
FP1 - float base = (6000.6) |
TA1 - integer base = (0x1000) |
TA1 - rtems_clock_get - 09:00:00 12/31/1988 |
TA2 - integer base = (0x2000) |
TA2 - rtems_clock_get - 09:00:00 12/31/1988 |
TA3 - integer base = (0x3000) |
TA3 - rtems_clock_get - 09:00:00 12/31/1988 |
TA4 - integer base = (0x4000) |
TA4 - float base = (4000.4) |
TA4 - rtems_clock_get - 09:00:00 12/31/1988 |
TA4 - rtems_clock_get - 09:00:01 12/31/1988 |
TA4 - rtems_clock_get - 09:00:02 12/31/1988 |
TA4 - rtems_clock_get - 09:00:03 12/31/1988 |
TA4 - rtems_clock_get - 09:00:04 12/31/1988 |
TA5 - integer base = (0x5000) |
TA5 - float base = (5000.5) |
TA5 - rtems_clock_get - 09:00:04 12/31/1988 |
TA1 - rtems_clock_get - 09:00:05 12/31/1988 |
TA5 - rtems_clock_get - 09:00:05 12/31/1988 |
TA4 - rtems_clock_get - 09:00:05 12/31/1988 |
TA5 - rtems_clock_get - 09:00:06 12/31/1988 |
TA4 - rtems_clock_get - 09:00:06 12/31/1988 |
TA5 - rtems_clock_get - 09:00:07 12/31/1988 |
TA4 - rtems_clock_get - 09:00:07 12/31/1988 |
TA5 - rtems_clock_get - 09:00:08 12/31/1988 |
TA4 - rtems_clock_get - 09:00:08 12/31/1988 |
TA5 - rtems_clock_get - 09:00:09 12/31/1988 |
TA4 - rtems_clock_get - 09:00:09 12/31/1988 |
TA2 - rtems_clock_get - 09:00:10 12/31/1988 |
TA1 - rtems_clock_get - 09:00:10 12/31/1988 |
TA5 - rtems_clock_get - 09:00:10 12/31/1988 |
TA4 - rtems_clock_get - 09:00:10 12/31/1988 |
TA5 - rtems_clock_get - 09:00:11 12/31/1988 |
TA4 - rtems_clock_get - 09:00:11 12/31/1988 |
TA5 - rtems_clock_get - 09:00:12 12/31/1988 |
TA4 - rtems_clock_get - 09:00:12 12/31/1988 |
TA5 - rtems_clock_get - 09:00:13 12/31/1988 |
TA4 - rtems_clock_get - 09:00:13 12/31/1988 |
TA5 - rtems_clock_get - 09:00:14 12/31/1988 |
TA4 - rtems_clock_get - 09:00:14 12/31/1988 |
TA3 - rtems_clock_get - 09:00:15 12/31/1988 |
TA1 - rtems_clock_get - 09:00:15 12/31/1988 |
TA5 - rtems_clock_get - 09:00:15 12/31/1988 |
TA4 - rtems_clock_get - 09:00:15 12/31/1988 |
TA5 - rtems_task_delete - TA3 |
*** END OF TEST 19 *** |