summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1995-12-19 19:22:55 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1995-12-19 19:22:55 +0000
commit7593d56c4ff573ca6e7e0ab01b3436f1d3e9a950 (patch)
tree8144349d6b787f39a12e0ee4d9ad12335df97f99
parentfile lost in crash and readded (diff)
downloadrtems-7593d56c4ff573ca6e7e0ab01b3436f1d3e9a950.tar.bz2
file lost in crash and re-added
-rw-r--r--c/src/lib/libbsp/m68k/efi332/times193
-rw-r--r--c/src/lib/libbsp/m68k/idp/times193
-rw-r--r--c/src/lib/libbsp/m68k/mvme136/times191
-rw-r--r--c/src/lib/libbsp/m68k/mvme162/include/page_table.h42
-rw-r--r--c/src/lib/libbsp/m68k/mvme162/startup/page_table.c201
-rw-r--r--c/src/lib/libbsp/m68k/mvme162/times193
-rw-r--r--c/src/lib/libbsp/powerpc/papyrus/startup/linkcmds77
-rw-r--r--c/src/lib/libbsp/powerpc/papyrus/times197
-rw-r--r--c/src/tests/tools/generic/sorttimes192
9 files changed, 1479 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/m68k/efi332/times b/c/src/lib/libbsp/m68k/efi332/times
new file mode 100644
index 0000000000..17ac20f2cf
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/efi332/times
@@ -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
diff --git a/c/src/lib/libbsp/m68k/idp/times b/c/src/lib/libbsp/m68k/idp/times
new file mode 100644
index 0000000000..92864585f3
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/idp/times
@@ -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
diff --git a/c/src/lib/libbsp/m68k/mvme136/times b/c/src/lib/libbsp/m68k/mvme136/times
new file mode 100644
index 0000000000..c1c6020183
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/mvme136/times
@@ -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
diff --git a/c/src/lib/libbsp/m68k/mvme162/include/page_table.h b/c/src/lib/libbsp/m68k/mvme162/include/page_table.h
new file mode 100644
index 0000000000..ec73c3dae8
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/mvme162/include/page_table.h
@@ -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
diff --git a/c/src/lib/libbsp/m68k/mvme162/startup/page_table.c b/c/src/lib/libbsp/m68k/mvme162/startup/page_table.c
new file mode 100644
index 0000000000..76f0d5d52b
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/mvme162/startup/page_table.c
@@ -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;
+}
+
+
diff --git a/c/src/lib/libbsp/m68k/mvme162/times b/c/src/lib/libbsp/m68k/mvme162/times
new file mode 100644
index 0000000000..7f37dc4176
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/mvme162/times
@@ -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
diff --git a/c/src/lib/libbsp/powerpc/papyrus/startup/linkcmds b/c/src/lib/libbsp/powerpc/papyrus/startup/linkcmds
new file mode 100644
index 0000000000..df1997639f
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/papyrus/startup/linkcmds
@@ -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) }
+}
+
+
diff --git a/c/src/lib/libbsp/powerpc/papyrus/times b/c/src/lib/libbsp/powerpc/papyrus/times
new file mode 100644
index 0000000000..da260853bf
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/papyrus/times
@@ -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
diff --git a/c/src/tests/tools/generic/sorttimes b/c/src/tests/tools/generic/sorttimes
new file mode 100644
index 0000000000..161f5e30b0
--- /dev/null
+++ b/c/src/tests/tools/generic/sorttimes
@@ -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