file lost in crash and re-added

This commit is contained in:
Joel Sherrill
1995-12-19 19:22:55 +00:00
parent f3fe5b2488
commit 7593d56c4f
9 changed files with 1479 additions and 0 deletions

View File

@@ -0,0 +1,193 @@
#
# Timing Test Suite Results for the EFI332 BSP
#
# $Id$
#
NOTE: This BSP is used submitted and no information is currently available.
Board: EFI332
CPU: 68332
Clock Speed: 20 Mhz
Memory Configuration: SRAM, DRAM, cache, etc
Wait States:
Times Reported in: cycles, microseconds, etc
Timer Source: Count Down Timer, on-CPU cycle counter, etc
Column A: unused
Column B: unused
# DESCRIPTION A B
== ================================================================= ==== ====
1 rtems_semaphore_create 20
rtems_semaphore_delete 21
rtems_semaphore_obtain: available 15
rtems_semaphore_obtain: not available -- NO_WAIT 15
rtems_semaphore_release: no waiting tasks 16
2 rtems_semaphore_obtain: not available -- caller blocks 62
3 rtems_semaphore_release: task readied -- preempts caller 55
4 rtems_task_restart: blocked task -- preempts caller 77
rtems_task_restart: ready task -- preempts caller 70
rtems_semaphore_release: task readied -- returns to caller 25
rtems_task_create 57
rtems_task_start 31
rtems_task_restart: suspended task -- returns to caller 36
rtems_task_delete: suspended task 47
rtems_task_restart: ready task -- returns to caller 37
rtems_task_restart: blocked task -- returns to caller 46
rtems_task_delete: blocked task 50
5 rtems_task_suspend: calling task 51
rtems_task_resume: task readied -- preempts caller 49
6 rtems_task_restart: calling task 59
rtems_task_suspend: returns to caller 18
rtems_task_resume: task readied -- returns to caller 19
rtems_task_delete: ready task 50
7 rtems_task_restart: suspended task -- preempts caller 70
8 rtems_task_set_priority: obtain current priority 12
rtems_task_set_priority: returns to caller 27
rtems_task_mode: obtain current mode 5
rtems_task_mode: no reschedule 5
rtems_task_mode: reschedule -- returns to caller 8
rtems_task_mode: reschedule -- preempts caller 39
rtems_task_set_note 13
rtems_task_get_note 13
rtems_clock_set 33
rtems_clock_get 3
9 rtems_message_queue_create 110
rtems_message_queue_send: no waiting tasks 37
rtems_message_queue_urgent: no waiting tasks 37
rtems_message_queue_receive: available 31
rtems_message_queue_flush: no messages flushed 12
rtems_message_queue_flush: messages flushed 16
rtems_message_queue_delete 26
10 rtems_message_queue_receive: not available -- NO_WAIT 15
rtems_message_queue_receive: not available -- caller blocks 62
11 rtems_message_queue_send: task readied -- preempts caller 72
12 rtems_message_queue_send: task readied -- returns to caller 39
13 rtems_message_queue_urgent: task readied -- preempts caller 72
14 rtems_message_queue_urgent: task readied -- returns to caller 39
15 rtems_event_receive: obtain current events 1
rtems_event_receive: not available -- NO_WAIT 12
rtems_event_receive: not available -- caller blocks 56
rtems_event_send: no task readied 12
rtems_event_receive: available 12
rtems_event_send: task readied -- returns to caller 24
16 rtems_event_send: task readied -- preempts caller 55
17 rtems_task_set_priority: preempts caller 62
18 rtems_task_delete: calling task 83
19 rtems_signal_catch 9
rtems_signal_send: returns to caller 15
rtems_signal_send: signal to self 18
exit ASR overhead: returns to calling task 22
exit ASR overhead: returns to preempting task 49
20 rtems_partition_create 35
rtems_region_create 23
rtems_partition_get_buffer: available 15
rtems_partition_get_buffer: not available 13
rtems_partition_return_buffer 18
rtems_partition_delete 16
rtems_region_get_segment: available 22
rtems_region_get_segment: not available -- NO_WAIT 21
rtems_region_return_segment: no waiting tasks 19
rtems_region_get_segment: not available -- caller blocks 64
rtems_region_return_segment: task readied -- preempts caller 74
rtems_region_return_segment: task readied -- returns to caller 44
rtems_region_delete 16
rtems_io_initialize 2
rtems_io_open 1
rtems_io_close 1
rtems_io_read 1
rtems_io_write 1
rtems_io_control 1
21 rtems_task_ident 149
rtems_message_queue_ident 145
rtems_semaphore_ident 156
rtems_partition_ident 145
rtems_region_ident 148
rtems_port_ident 145
rtems_timer_ident 145
rtems_rate_monotonic_ident 145
22 rtems_message_queue_broadcast: task readied -- returns to caller 42
rtems_message_queue_broadcast: no waiting tasks 17
rtems_message_queue_broadcast: task readied -- preempts caller 78
23 rtems_timer_create 14
rtems_timer_fire_after: inactive 22
rtems_timer_fire_after: active 24
rtems_timer_cancel: active 15
rtems_timer_cancel: inactive 13
rtems_timer_reset: inactive 21
rtems_timer_reset: active 23
rtems_timer_fire_when: inactive 34
rtems_timer_fire_when: active 34
rtems_timer_delete: active 19
rtems_timer_delete: inactive 17
rtems_task_wake_when 69
24 rtems_task_wake_after: yield -- returns to caller 9
rtems_task_wake_after: yields -- preempts caller 45
25 rtems_clock_tick 4
26 _ISR_Disable 0
_ISR_Flash 1
_ISR_Enable 1
_Thread_Disable_dispatch 0
_Thread_Enable_dispatch 7
_Thread_Set_state 11
_Thread_Disptach (NO FP) 31
context switch: no floating point contexts 21
context switch: self 10
context switch: to another task 10
context switch: restore 1st FP task 25
fp context switch: save idle, restore idle 31
fp context switch: save idle, restore initialized 19
fp context switch: save initialized, restore initialized 20
_Thread_Resume 7
_Thread_Unblock 7
_Thread_Ready 9
_Thread_Get 4
_Semaphore_Get 2
_Thread_Get: invalid id 0
27 interrupt entry overhead: returns to interrupted task 6
interrupt exit overhead: returns to interrupted task 6
interrupt entry overhead: returns to nested interrupt 6
interrupt exit overhead: returns to nested interrupt 5
interrupt entry overhead: returns to preempting task 7
interrupt exit overhead: returns to preempting task 36
28 rtems_port_create 16
rtems_port_external_to_internal 11
rtems_port_internal_to_external 11
rtems_port_delete 16
29 rtems_rate_monotonic_create 15
rtems_rate_monotonic_period: initiate period -- returns to caller 21
rtems_rate_monotonic_period: obtain status 13
rtems_rate_monotonic_cancel 16
rtems_rate_monotonic_delete: inactive 18
rtems_rate_monotonic_delete: active 20
rtems_rate_monotonic_period: conclude periods -- caller blocks 53

View File

@@ -0,0 +1,193 @@
#
# Timing Test Suite Results for the Motorola IDP BSP
#
# $Id$
#
NOTE: This BSP is used submitted and no information is currently available.
Board: IDP
CPU:
Clock Speed:
Memory Configuration: SRAM, DRAM, cache, etc
Wait States:
Times Reported in: cycles, microseconds, etc
Timer Source: Count Down Timer, on-CPU cycle counter, etc
Column A: unused
Column B: unused
# DESCRIPTION A B
== ================================================================= ==== ====
1 rtems_semaphore_create 20
rtems_semaphore_delete 21
rtems_semaphore_obtain: available 15
rtems_semaphore_obtain: not available -- NO_WAIT 15
rtems_semaphore_release: no waiting tasks 16
2 rtems_semaphore_obtain: not available -- caller blocks 62
3 rtems_semaphore_release: task readied -- preempts caller 55
4 rtems_task_restart: blocked task -- preempts caller 77
rtems_task_restart: ready task -- preempts caller 70
rtems_semaphore_release: task readied -- returns to caller 25
rtems_task_create 57
rtems_task_start 31
rtems_task_restart: suspended task -- returns to caller 36
rtems_task_delete: suspended task 47
rtems_task_restart: ready task -- returns to caller 37
rtems_task_restart: blocked task -- returns to caller 46
rtems_task_delete: blocked task 50
5 rtems_task_suspend: calling task 51
rtems_task_resume: task readied -- preempts caller 49
6 rtems_task_restart: calling task 59
rtems_task_suspend: returns to caller 18
rtems_task_resume: task readied -- returns to caller 19
rtems_task_delete: ready task 50
7 rtems_task_restart: suspended task -- preempts caller 70
8 rtems_task_set_priority: obtain current priority 12
rtems_task_set_priority: returns to caller 27
rtems_task_mode: obtain current mode 5
rtems_task_mode: no reschedule 5
rtems_task_mode: reschedule -- returns to caller 8
rtems_task_mode: reschedule -- preempts caller 39
rtems_task_set_note 13
rtems_task_get_note 13
rtems_clock_set 33
rtems_clock_get 3
9 rtems_message_queue_create 110
rtems_message_queue_send: no waiting tasks 37
rtems_message_queue_urgent: no waiting tasks 37
rtems_message_queue_receive: available 31
rtems_message_queue_flush: no messages flushed 12
rtems_message_queue_flush: messages flushed 16
rtems_message_queue_delete 26
10 rtems_message_queue_receive: not available -- NO_WAIT 15
rtems_message_queue_receive: not available -- caller blocks 62
11 rtems_message_queue_send: task readied -- preempts caller 72
12 rtems_message_queue_send: task readied -- returns to caller 39
13 rtems_message_queue_urgent: task readied -- preempts caller 72
14 rtems_message_queue_urgent: task readied -- returns to caller 39
15 rtems_event_receive: obtain current events 1
rtems_event_receive: not available -- NO_WAIT 12
rtems_event_receive: not available -- caller blocks 56
rtems_event_send: no task readied 12
rtems_event_receive: available 12
rtems_event_send: task readied -- returns to caller 24
16 rtems_event_send: task readied -- preempts caller 55
17 rtems_task_set_priority: preempts caller 62
18 rtems_task_delete: calling task 83
19 rtems_signal_catch 9
rtems_signal_send: returns to caller 15
rtems_signal_send: signal to self 18
exit ASR overhead: returns to calling task 22
exit ASR overhead: returns to preempting task 49
20 rtems_partition_create 35
rtems_region_create 23
rtems_partition_get_buffer: available 15
rtems_partition_get_buffer: not available 13
rtems_partition_return_buffer 18
rtems_partition_delete 16
rtems_region_get_segment: available 22
rtems_region_get_segment: not available -- NO_WAIT 21
rtems_region_return_segment: no waiting tasks 19
rtems_region_get_segment: not available -- caller blocks 64
rtems_region_return_segment: task readied -- preempts caller 74
rtems_region_return_segment: task readied -- returns to caller 44
rtems_region_delete 16
rtems_io_initialize 2
rtems_io_open 1
rtems_io_close 1
rtems_io_read 1
rtems_io_write 1
rtems_io_control 1
21 rtems_task_ident 149
rtems_message_queue_ident 145
rtems_semaphore_ident 156
rtems_partition_ident 145
rtems_region_ident 148
rtems_port_ident 145
rtems_timer_ident 145
rtems_rate_monotonic_ident 145
22 rtems_message_queue_broadcast: task readied -- returns to caller 42
rtems_message_queue_broadcast: no waiting tasks 17
rtems_message_queue_broadcast: task readied -- preempts caller 78
23 rtems_timer_create 14
rtems_timer_fire_after: inactive 22
rtems_timer_fire_after: active 24
rtems_timer_cancel: active 15
rtems_timer_cancel: inactive 13
rtems_timer_reset: inactive 21
rtems_timer_reset: active 23
rtems_timer_fire_when: inactive 34
rtems_timer_fire_when: active 34
rtems_timer_delete: active 19
rtems_timer_delete: inactive 17
rtems_task_wake_when 69
24 rtems_task_wake_after: yield -- returns to caller 9
rtems_task_wake_after: yields -- preempts caller 45
25 rtems_clock_tick 4
26 _ISR_Disable 0
_ISR_Flash 1
_ISR_Enable 1
_Thread_Disable_dispatch 0
_Thread_Enable_dispatch 7
_Thread_Set_state 11
_Thread_Disptach (NO FP) 31
context switch: no floating point contexts 21
context switch: self 10
context switch: to another task 10
context switch: restore 1st FP task 25
fp context switch: save idle, restore idle 31
fp context switch: save idle, restore initialized 19
fp context switch: save initialized, restore initialized 20
_Thread_Resume 7
_Thread_Unblock 7
_Thread_Ready 9
_Thread_Get 4
_Semaphore_Get 2
_Thread_Get: invalid id 0
27 interrupt entry overhead: returns to interrupted task 6
interrupt exit overhead: returns to interrupted task 6
interrupt entry overhead: returns to nested interrupt 6
interrupt exit overhead: returns to nested interrupt 5
interrupt entry overhead: returns to preempting task 7
interrupt exit overhead: returns to preempting task 36
28 rtems_port_create 16
rtems_port_external_to_internal 11
rtems_port_internal_to_external 11
rtems_port_delete 16
29 rtems_rate_monotonic_create 15
rtems_rate_monotonic_period: initiate period -- returns to caller 21
rtems_rate_monotonic_period: obtain status 13
rtems_rate_monotonic_cancel 16
rtems_rate_monotonic_delete: inactive 18
rtems_rate_monotonic_delete: active 20
rtems_rate_monotonic_period: conclude periods -- caller blocks 53

View File

@@ -0,0 +1,191 @@
#
# Timing Test Suite Results for the Motorola MVME136 BSP
#
# $Id$
#
Board: Motorola MVME136
CPU: Motorola MC68020 + MC68881 FPU
Clock Speed: 20 Mhz
Memory Configuration: DRAM w/no cache
Wait States: 1 wait state
Times Reported in: microseconds
Timer Source: Zilog Z8036
Column A: 3.5.1 pre-release
Column B: unused
# DESCRIPTION A B
== ================================================================= ==== ====
1 rtems_semaphore_create 67
rtems_semaphore_delete 64
rtems_semaphore_obtain: available 46
rtems_semaphore_obtain: not available -- NO_WAIT 45
rtems_semaphore_release: no waiting tasks 51
2 rtems_semaphore_obtain: not available -- caller blocks 113
3 rtems_semaphore_release: task readied -- preempts caller 94
4 rtems_task_restart: blocked task -- preempts caller 152
rtems_task_restart: ready task -- preempts caller 145
rtems_semaphore_release: task readied -- returns to caller 71
rtems_task_create 154
rtems_task_start 82
rtems_task_restart: suspended task -- returns to caller 94
rtems_task_delete: suspended task 145
rtems_task_restart: ready task -- returns to caller 97
rtems_task_restart: blocked task -- returns to caller 128
rtems_task_delete: blocked task 149
5 rtems_task_suspend: calling task 77
rtems_task_resume: task readied -- preempts caller 74
6 rtems_task_restart: calling task 101
rtems_task_suspend: returns to caller 50
rtems_task_resume: task readied -- returns to caller 50
rtems_task_delete: ready task 151
7 rtems_task_restart: suspended task -- preempts caller 130
8 rtems_task_set_priority: obtain current priority 38
rtems_task_set_priority: returns to caller 71
rtems_task_mode: obtain current mode 16
rtems_task_mode: no reschedule 18
rtems_task_mode: reschedule -- returns to caller 24
rtems_task_mode: reschedule -- preempts caller 68
rtems_task_set_note 39
rtems_task_get_note 40
rtems_clock_set 93
rtems_clock_get 1
9 rtems_message_queue_create 207
rtems_message_queue_send: no waiting tasks 103
rtems_message_queue_urgent: no waiting tasks 103
rtems_message_queue_receive: available 87
rtems_message_queue_flush: no messages flushed 36
rtems_message_queue_flush: messages flushed 46
rtems_message_queue_delete 85
10 rtems_message_queue_receive: not available -- NO_WAIT 51
rtems_message_queue_receive: not available -- caller blocks 115
11 rtems_message_queue_send: task readied -- preempts caller 129
12 rtems_message_queue_send: task readied -- returns to caller 107
13 rtems_message_queue_urgent: task readied -- preempts caller 130
14 rtems_message_queue_urgent: task readied -- returns to caller 107
15 rtems_event_receive: obtain current events 0
rtems_event_receive: not available -- NO_WAIT 33
rtems_event_receive: not available -- caller blocks 92
rtems_event_send: no task readied 34
rtems_event_receive: available 36
rtems_event_send: task readied -- returns to caller 67
16 rtems_event_send: task readied -- preempts caller 90
17 rtems_task_set_priority: preempts caller 110
18 rtems_task_delete: calling task 175
19 rtems_signal_catch 23
rtems_signal_send: returns to caller 43
rtems_signal_send: signal to self 52
exit ASR overhead: returns to calling task 37
exit ASR overhead: returns to preempting task 65
20 rtems_partition_create 77
rtems_region_create 70
rtems_partition_get_buffer: available 42
rtems_partition_get_buffer: not available 40
rtems_partition_return_buffer 50
rtems_partition_delete 47
rtems_region_get_segment: available 58
rtems_region_get_segment: not available -- NO_WAIT 55
rtems_region_return_segment: no waiting tasks 60
rtems_region_get_segment: not available -- caller blocks 126
rtems_region_return_segment: task readied -- preempts caller 143
rtems_region_return_segment: task readied -- returns to caller 120
rtems_region_delete 45
rtems_io_initialize 6
rtems_io_open 2
rtems_io_close 1
rtems_io_read 2
rtems_io_write 2
rtems_io_control 2
21 rtems_task_ident 353
rtems_message_queue_ident 344
rtems_semaphore_ident 369
rtems_partition_ident 344
rtems_region_ident 350
rtems_port_ident 343
rtems_timer_ident 345
rtems_rate_monotonic_ident 344
22 rtems_message_queue_broadcast: task readied -- returns to caller 115
rtems_message_queue_broadcast: no waiting tasks 60
rtems_message_queue_broadcast: task readied -- preempts caller 138
23 rtems_timer_create 37
rtems_timer_fire_after: inactive 66
rtems_timer_fire_after: active 70
rtems_timer_cancel: active 42
rtems_timer_cancel: inactive 39
rtems_timer_reset: inactive 60
rtems_timer_reset: active 65
rtems_timer_fire_when: inactive 96
rtems_timer_fire_when: active 96
rtems_timer_delete: active 55
rtems_timer_delete: inactive 51
rtems_task_wake_when 125
24 rtems_task_wake_after: yield -- returns to caller 26
rtems_task_wake_after: yields -- preempts caller 65
25 rtems_clock_tick 14
26 _ISR_Disable 0
_ISR_Flash 0
_ISR_Enable 0
_Thread_Disable_dispatch 0
_Thread_Enable_dispatch 19
_Thread_Set_state 24
_Thread_Disptach (NO FP) 50
context switch: no floating point contexts 41
context switch: self 9
context switch: to another task 9
context switch: restore 1st FP task 46
fp context switch: save idle, restore idle 75
fp context switch: save idle, restore initialized 66
fp context switch: save initialized, restore initialized 65
_Thread_Resume 18
_Thread_Unblock 18
_Thread_Ready 22
_Thread_Get 12
_Semaphore_Get 10
_Thread_Get: invalid id 2
27 interrupt entry overhead: returns to interrupted task 9
interrupt exit overhead: returns to interrupted task 8
interrupt entry overhead: returns to nested interrupt 14
interrupt exit overhead: returns to nested interrupt 0
interrupt entry overhead: returns to preempting task 8
interrupt exit overhead: returns to preempting task 62
28 rtems_port_create 44
rtems_port_external_to_internal 35
rtems_port_internal_to_external 34
rtems_port_delete 46
29 rtems_rate_monotonic_create 40
rtems_rate_monotonic_period: initiate period -- returns to caller 60
rtems_rate_monotonic_period: obtain status 38
rtems_rate_monotonic_cancel 46
rtems_rate_monotonic_delete: inactive 54
rtems_rate_monotonic_delete: active 57
rtems_rate_monotonic_period: conclude periods -- caller blocks 83

View File

@@ -0,0 +1,42 @@
/*
* $Id$
*
* This file was submitted by Eric Vaitl <vaitl@viasat.com> and
* supports page table initialization.
*
* $Log$
* Revision 1.1 1995/12/05 15:29:19 joel
* added.. submitted by Eric Vaitl <vaitl@viasat.com>
*
* Revision 1.2 1995/10/27 21:00:33 vaitl
* Modified page table routines so application code can map
* VME space.
*
* Revision 1.1 1995/10/25 17:16:06 vaitl
* Working on page table. Caching partially set up, but can't currently
* set tc register.
*
*/
#ifndef PAGE_TABLE_H
#define PAGE_TABLE_H
extern void page_table_teardown(void);
extern void page_table_init(void);
extern int page_table_map(void *addr, unsigned long size, int cache_type);
enum {
CACHE_WRITE_THROUGH,
CACHE_COPYBACK,
CACHE_NONE_SERIALIZED,
CACHE_NONE
};
enum {
PTM_SUCCESS,
PTM_BAD_ADDR,
PTM_BAD_SIZE,
PTM_BAD_CACHE,
PTM_NO_TABLE_SPACE
};
#endif

View File

@@ -0,0 +1,201 @@
/*
* $Id$
*
* This file was submitted by Eric Vaitl <vaitl@viasat.com>.
* The manipulation of the page table has a very positive impact on
* the performance of the MVME162.
*
* The following history is included verbatim from the submitter.
*
* Revision 1.8 1995/11/18 00:07:25 vaitl
* Modified asm statements to get rid of the register hard-codes.
*
* Revision 1.7 1995/10/27 21:00:32 vaitl
* Modified page table routines so application code can map
* VME space.
*
* Revision 1.6 1995/10/26 17:40:01 vaitl
* Two cache changes after reading the mvme162 users manual.
*
* 1) The users manual says that the MPU can act as a source for the
* VME2 chip, so I made the VME accessable memory copy-back instead
* of write through. I have't changed the comments yet. If this
* causes problems, I'll change it back.
*
* 2) The 162 book also says that IO space should be serialized as well as
* non-cacheable. I flipped the appropriate dttr0 and ittr0 registers. I
* don't think this is really necessary because we don't recover from any
* exceptions. If it slows down IO addresses too much, I'll change it back
* and see what happens.
*
* Revision 1.5 1995/10/25 19:32:38 vaitl
* Got it. Three problems:
* 1) Must cpusha instead of cinva.
* 2) On page descriptors the PDT field of 1 or 3 is resident. On pointer
* descriptors resident is 2 or 3. I was using 2 for everything.
* Changed it to 3 for everything.
* 3) Forgot to do a pflusha.
*
* Revision 1.4 1995/10/25 17:47:11 vaitl
* Still working on it.
*
* Revision 1.3 1995/10/25 17:16:05 vaitl
* Working on page table. Caching partially set up, but can't currently
* set tc register.
*
*/
#include <string.h>
#include "page_table.h"
/* All page table must fit between BASE_TABLE_ADDR and
MAX_TABLE_ADDR. */
#define BASE_TABLE_ADDR 0x10000
#define MAX_TABLE_ADDR 0x20000
#define ROOT_TABLE_SIZE 512
#define POINTER_TABLE_SIZE 512
#define PAGE_TABLE_SIZE 256
static unsigned long *root_table;
static unsigned long *next_avail;
/* Returns a zeroed out table. */
static unsigned long *table_alloc(int size){
unsigned long *addr=next_avail;
if(((unsigned long)next_avail + size) > MAX_TABLE_ADDR){
return 0;
}
bzero((void *)addr,size);
next_avail =(unsigned long *)((unsigned long)next_avail + size);
return addr;
}
/*
void page_table_init();
This should transparently map the first 4 Meg of ram. Caching is
turned off from 0x00000000 to 0x00020000 (this region is used by
162Bug and contains the page tables). From 0x00020000 to 0x00400000
we are using copy back caching. DTTR0 and ITTR0 are set up to
directly translate from 0x80000000-0xffffffff with caching turned
off and serialized. Addresses between 0x400000 and 0x80000000 are
illegal.
*/
void page_table_init(){
/* put everything in a known state */
page_table_teardown();
root_table=table_alloc(ROOT_TABLE_SIZE);
/* First set up TTR.
base address = 0x80000000
address mask = 0x7f
Ignore FC2 for match.
Noncachable.
Not write protected.*/
asm volatile ("movec %0,%%dtt0
movec %0,%%itt0"
:: "d" (0x807fc040));
/* Point urp and srp at root page table. */
asm volatile ("movec %0,%%urp
movec %0,%%srp"
:: "d" (BASE_TABLE_ADDR));
page_table_map((void *)0,0x20000, CACHE_NONE);
page_table_map((void *)0x20000,0x400000-0x20000,CACHE_COPYBACK);
/* Turn on paging with a 4 k page size.*/
asm volatile ("movec %0,%%tc"
:: "d" (0x8000));
/* Turn on the cache. */
asm volatile ("movec %0,%%cacr"
:: "d" (0x80008000));
}
void page_table_teardown(){
next_avail=(unsigned long *)BASE_TABLE_ADDR;
/* Turn off paging. Turn off the cache. Flush the cache. Tear down
the transparent translations. */
asm volatile ("movec %0,%%tc
movec %0,%%cacr
cpusha %%bc
movec %0,%%dtt0
movec %0,%%itt0
movec %0,%%dtt1
movec %0,%%itt1"
:: "d" (0) );
}
/* Identity maps addr to addr+size with caching cache_type. */
int page_table_map(void *addr, unsigned long size, int cache_type){
unsigned long *pointer_table;
unsigned long *page_table;
unsigned long root_index, pointer_index, page_index;
/* addr must be a multiple of 4k */
if((unsigned long)addr & 0xfff){
return PTM_BAD_ADDR;
}
/* size must also be a multiple of 4k */
if(size & 0xfff){
return PTM_BAD_SIZE;
}
/* check for valid cache type */
if( (cache_type>CACHE_NONE) || (cache_type<CACHE_WRITE_THROUGH)){
return PTM_BAD_CACHE;
}
while(size){
root_index=(unsigned long)addr;
root_index >>= 25;
root_index &= 0x7f;
if(root_table[root_index]){
pointer_table =
(unsigned long *) (root_table[root_index] & 0xfffffe00);
}else{
if(!(pointer_table=table_alloc(POINTER_TABLE_SIZE))){
return PTM_NO_TABLE_SPACE;
}
root_table[root_index]=((unsigned long)pointer_table) + 0x03;
}
pointer_index=(unsigned long)addr;
pointer_index >>=18;
pointer_index &= 0x7f;
if(pointer_table[pointer_index]){
page_table =
(unsigned long *) (pointer_table[pointer_index] &
0xffffff00);
}else{
if(!(page_table=table_alloc(PAGE_TABLE_SIZE))){
return PTM_NO_TABLE_SPACE;
}
pointer_table[pointer_index]=
((unsigned long)page_table) + 0x03;
}
page_index=(unsigned long)addr;
page_index >>=12;
page_index &= 0x3f;
page_table[page_index] =
((unsigned long) addr & 0xfffff000) + 0x03 + (cache_type << 5);
size -= 4096;
addr = (void *) ((unsigned long)addr + 4096);
}
/* Flush the ATC. Push and invalidate the cache. */
asm volatile ("pflusha
cpusha %bc");
return PTM_SUCCESS;
}

View File

@@ -0,0 +1,193 @@
#
# Timing Test Suite Results for the Motorola MVME162 BSP
#
# $Id$
#
NOTE: This BSP is used submitted and no information is currently available.
Board: Motorola MVME162
CPU: Motorola MC68040
Clock Speed:
Memory Configuration: SRAM, DRAM, cache, etc
Wait States:
Times Reported in: cycles, microseconds, etc
Timer Source: Count Down Timer, on-CPU cycle counter, etc
Column A: unused
Column B: unused
# DESCRIPTION A B
== ================================================================= ==== ====
1 rtems_semaphore_create 20
rtems_semaphore_delete 21
rtems_semaphore_obtain: available 15
rtems_semaphore_obtain: not available -- NO_WAIT 15
rtems_semaphore_release: no waiting tasks 16
2 rtems_semaphore_obtain: not available -- caller blocks 62
3 rtems_semaphore_release: task readied -- preempts caller 55
4 rtems_task_restart: blocked task -- preempts caller 77
rtems_task_restart: ready task -- preempts caller 70
rtems_semaphore_release: task readied -- returns to caller 25
rtems_task_create 57
rtems_task_start 31
rtems_task_restart: suspended task -- returns to caller 36
rtems_task_delete: suspended task 47
rtems_task_restart: ready task -- returns to caller 37
rtems_task_restart: blocked task -- returns to caller 46
rtems_task_delete: blocked task 50
5 rtems_task_suspend: calling task 51
rtems_task_resume: task readied -- preempts caller 49
6 rtems_task_restart: calling task 59
rtems_task_suspend: returns to caller 18
rtems_task_resume: task readied -- returns to caller 19
rtems_task_delete: ready task 50
7 rtems_task_restart: suspended task -- preempts caller 70
8 rtems_task_set_priority: obtain current priority 12
rtems_task_set_priority: returns to caller 27
rtems_task_mode: obtain current mode 5
rtems_task_mode: no reschedule 5
rtems_task_mode: reschedule -- returns to caller 8
rtems_task_mode: reschedule -- preempts caller 39
rtems_task_set_note 13
rtems_task_get_note 13
rtems_clock_set 33
rtems_clock_get 3
9 rtems_message_queue_create 110
rtems_message_queue_send: no waiting tasks 37
rtems_message_queue_urgent: no waiting tasks 37
rtems_message_queue_receive: available 31
rtems_message_queue_flush: no messages flushed 12
rtems_message_queue_flush: messages flushed 16
rtems_message_queue_delete 26
10 rtems_message_queue_receive: not available -- NO_WAIT 15
rtems_message_queue_receive: not available -- caller blocks 62
11 rtems_message_queue_send: task readied -- preempts caller 72
12 rtems_message_queue_send: task readied -- returns to caller 39
13 rtems_message_queue_urgent: task readied -- preempts caller 72
14 rtems_message_queue_urgent: task readied -- returns to caller 39
15 rtems_event_receive: obtain current events 1
rtems_event_receive: not available -- NO_WAIT 12
rtems_event_receive: not available -- caller blocks 56
rtems_event_send: no task readied 12
rtems_event_receive: available 12
rtems_event_send: task readied -- returns to caller 24
16 rtems_event_send: task readied -- preempts caller 55
17 rtems_task_set_priority: preempts caller 62
18 rtems_task_delete: calling task 83
19 rtems_signal_catch 9
rtems_signal_send: returns to caller 15
rtems_signal_send: signal to self 18
exit ASR overhead: returns to calling task 22
exit ASR overhead: returns to preempting task 49
20 rtems_partition_create 35
rtems_region_create 23
rtems_partition_get_buffer: available 15
rtems_partition_get_buffer: not available 13
rtems_partition_return_buffer 18
rtems_partition_delete 16
rtems_region_get_segment: available 22
rtems_region_get_segment: not available -- NO_WAIT 21
rtems_region_return_segment: no waiting tasks 19
rtems_region_get_segment: not available -- caller blocks 64
rtems_region_return_segment: task readied -- preempts caller 74
rtems_region_return_segment: task readied -- returns to caller 44
rtems_region_delete 16
rtems_io_initialize 2
rtems_io_open 1
rtems_io_close 1
rtems_io_read 1
rtems_io_write 1
rtems_io_control 1
21 rtems_task_ident 149
rtems_message_queue_ident 145
rtems_semaphore_ident 156
rtems_partition_ident 145
rtems_region_ident 148
rtems_port_ident 145
rtems_timer_ident 145
rtems_rate_monotonic_ident 145
22 rtems_message_queue_broadcast: task readied -- returns to caller 42
rtems_message_queue_broadcast: no waiting tasks 17
rtems_message_queue_broadcast: task readied -- preempts caller 78
23 rtems_timer_create 14
rtems_timer_fire_after: inactive 22
rtems_timer_fire_after: active 24
rtems_timer_cancel: active 15
rtems_timer_cancel: inactive 13
rtems_timer_reset: inactive 21
rtems_timer_reset: active 23
rtems_timer_fire_when: inactive 34
rtems_timer_fire_when: active 34
rtems_timer_delete: active 19
rtems_timer_delete: inactive 17
rtems_task_wake_when 69
24 rtems_task_wake_after: yield -- returns to caller 9
rtems_task_wake_after: yields -- preempts caller 45
25 rtems_clock_tick 4
26 _ISR_Disable 0
_ISR_Flash 1
_ISR_Enable 1
_Thread_Disable_dispatch 0
_Thread_Enable_dispatch 7
_Thread_Set_state 11
_Thread_Disptach (NO FP) 31
context switch: no floating point contexts 21
context switch: self 10
context switch: to another task 10
context switch: restore 1st FP task 25
fp context switch: save idle, restore idle 31
fp context switch: save idle, restore initialized 19
fp context switch: save initialized, restore initialized 20
_Thread_Resume 7
_Thread_Unblock 7
_Thread_Ready 9
_Thread_Get 4
_Semaphore_Get 2
_Thread_Get: invalid id 0
27 interrupt entry overhead: returns to interrupted task 6
interrupt exit overhead: returns to interrupted task 6
interrupt entry overhead: returns to nested interrupt 6
interrupt exit overhead: returns to nested interrupt 5
interrupt entry overhead: returns to preempting task 7
interrupt exit overhead: returns to preempting task 36
28 rtems_port_create 16
rtems_port_external_to_internal 11
rtems_port_internal_to_external 11
rtems_port_delete 16
29 rtems_rate_monotonic_create 15
rtems_rate_monotonic_period: initiate period -- returns to caller 21
rtems_rate_monotonic_period: obtain status 13
rtems_rate_monotonic_cancel 16
rtems_rate_monotonic_delete: inactive 18
rtems_rate_monotonic_delete: active 20
rtems_rate_monotonic_period: conclude periods -- caller blocks 53

View File

@@ -0,0 +1,77 @@
/*
* This file contains directives for the GNU linker which are specific
* to the Papyrus.
*
* $Id$
*/
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
"elf32-powerpc")
OUTPUT_ARCH(powerpc)
SEARCH_DIR(/usr/local/powerpc-rtems/lib);
ENTRY(download_entry)
MEMORY
{
RAM : ORIGIN = 0, LENGTH = 4M
FLASH : ORIGIN = 0xFF000000, LENGTH = 0x80000
EPROM : ORIGIN = 0xFFFE0000, LENGTH = 0x20000
}
/* Do we need any of these for elf?
__DYNAMIC = 0; */
SECTIONS
{
.vectors 0x0100 :
{
*(.vectors)
}
.text 0x20000 :
{
*(.entry)
*(.entry2)
*(.text)
*(.rodata)
*(.rodata1)
*(.descriptors)
*(rom_ver)
} > RAM
/* R/W Data */
.data :
{
*(.data)
*(.data1)
} > RAM
.got :
{
s.got = .;
*(.got.plt) *(.got)
} > RAM
.bss :
{
bss.start = .;
*(.bss) *(.sbss) *(COMMON)
bss.end = ALIGN(4);
} > RAM
bss.size = bss.end - bss.start;
PROVIDE(_end = bss.end);
.line 0 : { *(.line) }
.debug 0 : { *(.debug) }
.debug_sfnames 0 : { *(.debug_sfnames) }
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_pubnames 0 : { *(.debug_pubnames) }
.debug_aranges 0 : { *(.debug_aranges) }
.debug_aregion 0 : { *(.debug_aregion) }
.debug_macinfo 0 : { *(.debug_macinfo) }
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
}

View File

@@ -0,0 +1,197 @@
#
# Timing Test Suite Results for the Papyrus BSP
#
# NOTE: The Papyrus is a proprietary PPC403 based board. But it is the
# only BSP currently available for the PowerPC family.
#
# $Id$
#
NOTE: This BSP is user submitted and no timing information
is currently avaiable.
Board: Papyrus
CPU: IBM 403GA
Clock Speed: 33 Mhz
Memory Configuration: SRAM, DRAM, cache, etc
Wait States:
Times Reported in: cycles, microseconds, etc
Timer Source: Count Down Timer, on-CPU cycle counter, etc
Column A: unused
Column B: unused
# DESCRIPTION A B
== ================================================================= ==== ====
1 rtems_semaphore_create 20
rtems_semaphore_delete 21
rtems_semaphore_obtain: available 15
rtems_semaphore_obtain: not available -- NO_WAIT 15
rtems_semaphore_release: no waiting tasks 16
2 rtems_semaphore_obtain: not available -- caller blocks 62
3 rtems_semaphore_release: task readied -- preempts caller 55
4 rtems_task_restart: blocked task -- preempts caller 77
rtems_task_restart: ready task -- preempts caller 70
rtems_semaphore_release: task readied -- returns to caller 25
rtems_task_create 57
rtems_task_start 31
rtems_task_restart: suspended task -- returns to caller 36
rtems_task_delete: suspended task 47
rtems_task_restart: ready task -- returns to caller 37
rtems_task_restart: blocked task -- returns to caller 46
rtems_task_delete: blocked task 50
5 rtems_task_suspend: calling task 51
rtems_task_resume: task readied -- preempts caller 49
6 rtems_task_restart: calling task 59
rtems_task_suspend: returns to caller 18
rtems_task_resume: task readied -- returns to caller 19
rtems_task_delete: ready task 50
7 rtems_task_restart: suspended task -- preempts caller 70
8 rtems_task_set_priority: obtain current priority 12
rtems_task_set_priority: returns to caller 27
rtems_task_mode: obtain current mode 5
rtems_task_mode: no reschedule 5
rtems_task_mode: reschedule -- returns to caller 8
rtems_task_mode: reschedule -- preempts caller 39
rtems_task_set_note 13
rtems_task_get_note 13
rtems_clock_set 33
rtems_clock_get 3
9 rtems_message_queue_create 110
rtems_message_queue_send: no waiting tasks 37
rtems_message_queue_urgent: no waiting tasks 37
rtems_message_queue_receive: available 31
rtems_message_queue_flush: no messages flushed 12
rtems_message_queue_flush: messages flushed 16
rtems_message_queue_delete 26
10 rtems_message_queue_receive: not available -- NO_WAIT 15
rtems_message_queue_receive: not available -- caller blocks 62
11 rtems_message_queue_send: task readied -- preempts caller 72
12 rtems_message_queue_send: task readied -- returns to caller 39
13 rtems_message_queue_urgent: task readied -- preempts caller 72
14 rtems_message_queue_urgent: task readied -- returns to caller 39
15 rtems_event_receive: obtain current events 1
rtems_event_receive: not available -- NO_WAIT 12
rtems_event_receive: not available -- caller blocks 56
rtems_event_send: no task readied 12
rtems_event_receive: available 12
rtems_event_send: task readied -- returns to caller 24
16 rtems_event_send: task readied -- preempts caller 55
17 rtems_task_set_priority: preempts caller 62
18 rtems_task_delete: calling task 83
19 rtems_signal_catch 9
rtems_signal_send: returns to caller 15
rtems_signal_send: signal to self 18
exit ASR overhead: returns to calling task 22
exit ASR overhead: returns to preempting task 49
20 rtems_partition_create 35
rtems_region_create 23
rtems_partition_get_buffer: available 15
rtems_partition_get_buffer: not available 13
rtems_partition_return_buffer 18
rtems_partition_delete 16
rtems_region_get_segment: available 22
rtems_region_get_segment: not available -- NO_WAIT 21
rtems_region_return_segment: no waiting tasks 19
rtems_region_get_segment: not available -- caller blocks 64
rtems_region_return_segment: task readied -- preempts caller 74
rtems_region_return_segment: task readied -- returns to caller 44
rtems_region_delete 16
rtems_io_initialize 2
rtems_io_open 1
rtems_io_close 1
rtems_io_read 1
rtems_io_write 1
rtems_io_control 1
21 rtems_task_ident 149
rtems_message_queue_ident 145
rtems_semaphore_ident 156
rtems_partition_ident 145
rtems_region_ident 148
rtems_port_ident 145
rtems_timer_ident 145
rtems_rate_monotonic_ident 145
22 rtems_message_queue_broadcast: task readied -- returns to caller 42
rtems_message_queue_broadcast: no waiting tasks 17
rtems_message_queue_broadcast: task readied -- preempts caller 78
23 rtems_timer_create 14
rtems_timer_fire_after: inactive 22
rtems_timer_fire_after: active 24
rtems_timer_cancel: active 15
rtems_timer_cancel: inactive 13
rtems_timer_reset: inactive 21
rtems_timer_reset: active 23
rtems_timer_fire_when: inactive 34
rtems_timer_fire_when: active 34
rtems_timer_delete: active 19
rtems_timer_delete: inactive 17
rtems_task_wake_when 69
24 rtems_task_wake_after: yield -- returns to caller 9
rtems_task_wake_after: yields -- preempts caller 45
25 rtems_clock_tick 4
26 _ISR_Disable 0
_ISR_Flash 1
_ISR_Enable 1
_Thread_Disable_dispatch 0
_Thread_Enable_dispatch 7
_Thread_Set_state 11
_Thread_Disptach (NO FP) 31
context switch: no floating point contexts 21
context switch: self 10
context switch: to another task 10
context switch: restore 1st FP task 25
fp context switch: save idle, restore idle 31
fp context switch: save idle, restore initialized 19
fp context switch: save initialized, restore initialized 20
_Thread_Resume 7
_Thread_Unblock 7
_Thread_Ready 9
_Thread_Get 4
_Semaphore_Get 2
_Thread_Get: invalid id 0
27 interrupt entry overhead: returns to interrupted task 6
interrupt exit overhead: returns to interrupted task 6
interrupt entry overhead: returns to nested interrupt 6
interrupt exit overhead: returns to nested interrupt 5
interrupt entry overhead: returns to preempting task 7
interrupt exit overhead: returns to preempting task 36
28 rtems_port_create 16
rtems_port_external_to_internal 11
rtems_port_internal_to_external 11
rtems_port_delete 16
29 rtems_rate_monotonic_create 15
rtems_rate_monotonic_period: initiate period -- returns to caller 21
rtems_rate_monotonic_period: obtain status 13
rtems_rate_monotonic_cancel 16
rtems_rate_monotonic_delete: inactive 18
rtems_rate_monotonic_delete: active 20
rtems_rate_monotonic_period: conclude periods -- caller blocks 53

View File

@@ -0,0 +1,192 @@
#!KSHELL -p
#
# This script takes the output from the Timing Test Suite, reorders
# it, and adds headers so it is in the same order as is printed in
# the supplement.
#
usage()
{
echo "${progname} file [more files]"
}
header()
{
echo
echo $*
echo
}
lookup()
{
grep "$*" $files
}
progname=$0
if [ $# -eq 0 ] ; then
usage
exit 0
fi
files=$*
header Context Switch
lookup context switch: self
lookup context switch: to another task
lookup context switch: no floating point contexts
lookup fp context switch: restore 1st FP task
lookup fp context switch: save initialized, restore initialized
lookup fp context switch: save idle, restore initialized
lookup fp context switch: save idle, restore idle
header Task Manager
lookup rtems_task_create
lookup rtems_task_ident
lookup rtems_task_start
lookup rtems_task_restart: calling task
lookup rtems_task_restart: suspended task -- returns to caller
lookup rtems_task_restart: blocked task -- returns to caller
lookup rtems_task_restart: ready task -- returns to caller
lookup rtems_task_restart: suspended task -- preempts caller
lookup rtems_task_restart: blocked task -- preempts caller
lookup rtems_task_restart: ready task -- preempts caller
lookup rtems_task_delete: calling task
lookup rtems_task_delete: suspended task
lookup rtems_task_delete: blocked task
lookup rtems_task_delete: ready task
lookup rtems_task_suspend: calling task
lookup rtems_task_suspend: returns to caller
lookup rtems_task_resume: task readied -- returns to caller
lookup rtems_task_resume: task readied -- preempts caller
lookup rtems_task_set_priority: obtain current priority
lookup rtems_task_set_priority: returns to caller
lookup rtems_task_set_priority: preempts caller
lookup rtems_task_mode: obtain current mode
lookup rtems_task_mode: no reschedule
lookup rtems_task_mode: reschedule -- returns to caller
lookup rtems_task_mode: reschedule -- preempts caller
lookup rtems_task_get_note
lookup rtems_task_set_note
lookup rtems_task_wake_after: yield -- returns to caller
lookup rtems_task_wake_after: yields -- preempts caller
lookup rtems_task_wake_when
header Interrupt Manager
lookup interrupt entry overhead: returns to nested interrupt
lookup interrupt entry overhead: returns to interrupted task
lookup interrupt entry overhead: returns to preempting task
lookup interrupt exit overhead: returns to nested interrupt
lookup interrupt exit overhead: returns to interrupted task
lookup interrupt exit overhead: returns to preempting task
header Clock Manager
lookup rtems_clock_set
lookup rtems_clock_get
lookup rtems_clock_tick
header Timer Manager
lookup rtems_timer_create
lookup rtems_timer_ident
lookup rtems_timer_delete: inactive
lookup rtems_timer_delete: active
lookup rtems_timer_fire_after: inactive
lookup rtems_timer_fire_after: active
lookup rtems_timer_fire_when: inactive
lookup rtems_timer_fire_when: active
lookup rtems_timer_reset: inactive
lookup rtems_timer_reset: active
lookup rtems_timer_cancel: inactive
lookup rtems_timer_cancel: active
header Semaphore Manager
lookup rtems_semaphore_create
lookup rtems_semaphore_ident
lookup rtems_semaphore_delete
lookup rtems_semaphore_obtain: available
lookup rtems_semaphore_obtain: not available -- NO_WAIT
lookup rtems_semaphore_obtain: not available -- caller blocks
lookup rtems_semaphore_release: no waiting tasks
lookup rtems_semaphore_release: task readied -- returns to caller
lookup rtems_semaphore_release: task readied -- preempts caller
header Message Queue Manager
lookup rtems_message_queue_create
lookup rtems_message_queue_ident
lookup rtems_message_queue_delete
lookup rtems_message_queue_send: no waiting tasks
lookup rtems_message_queue_send: task readied -- returns to caller
lookup rtems_message_queue_send: task readied -- preempts caller
lookup rtems_message_queue_urgent: no waiting tasks
lookup rtems_message_queue_urgent: task readied -- returns to caller
lookup rtems_message_queue_urgent: task readied -- preempts caller
lookup rtems_message_queue_broadcast: no waiting tasks
lookup rtems_message_queue_broadcast: task readied -- returns to caller
lookup rtems_message_queue_broadcast: task readied -- preempts caller
lookup rtems_message_queue_receive: available
lookup rtems_message_queue_receive: not available -- NO_WAIT
lookup rtems_message_queue_receive: not available -- caller blocks
lookup rtems_message_queue_flush: no messages flushed
lookup rtems_message_queue_flush: messages flushed
header Event Manager
lookup rtems_event_send: no task readied
lookup rtems_event_send: task readied -- returns to caller
lookup rtems_event_send: task readied -- preempts caller
lookup rtems_event_receive: obtain current events
lookup rtems_event_receive: available
lookup rtems_event_receive: not available -- NO_WAIT
lookup rtems_event_receive: not available -- caller blocks
header Signal Manager
lookup rtems_signal_catch
lookup rtems_signal_send: returns to caller
lookup rtems_signal_send: signal to self
lookup exit ASR overhead: returns to calling task
lookup exit ASR overhead: returns to preempting task
header Partition Manager
lookup rtems_partition_create
lookup rtems_partition_ident
lookup rtems_partition_delete
lookup rtems_partition_get_buffer: available
lookup rtems_partition_get_buffer: not available
lookup rtems_partition_return_buffer
header Region Manager
lookup rtems_region_create
lookup rtems_region_ident
lookup rtems_region_delete
lookup rtems_region_get_segment: available
lookup rtems_region_get_segment: not available -- NO_WAIT
lookup rtems_region_get_segment: not available -- caller blocks
lookup rtems_region_return_segment: no waiting tasks
lookup rtems_region_return_segment: task readied -- returns to caller
lookup rtems_region_return_segment: task readied -- preempts caller
header Dual-Ported Memory Manager
lookup rtems_port_create
lookup rtems_port_ident
lookup rtems_port_delete
lookup rtems_port_internal_to_external
lookup rtems_port_external_to_internal
header IO Manager
lookup rtems_io_initialize
lookup rtems_io_open
lookup rtems_io_close
lookup rtems_io_read
lookup rtems_io_write
lookup rtems_io_control
header Rate Monotonic Manager
lookup rtems_rate_monotonic_create
lookup rtems_rate_monotonic_ident
lookup rtems_rate_monotonic_cancel
lookup rtems_rate_monotonic_delete: active
lookup rtems_rate_monotonic_delete: inactive
lookup rtems_rate_monotonic_period: obtain status
lookup rtems_rate_monotonic_period: initiate period -- returns to caller
lookup rtems_rate_monotonic_period: conclude periods -- caller blocks
exit 0