source: rtems/c/src/lib/libbsp/powerpc/helas403/times @ 4d9c92b0

4.104.114.84.95
Last change on this file since 4d9c92b0 was be4284d0, checked in by Joel Sherrill <joel.sherrill@…>, on 09/30/98 at 21:50:42

BSP submitted by Thomas Doerfler <td@…>:

Finally I am through: I have found the last bugs that made RTEMS-
4.0-beta3 start on my ppc403 board from ROM. So now the '403
support is up to date again.

Roughly I have added the following features:

  • support for the on-chip interrupt controller (in a separate module)
  • interrupt support for the console device
  • termios support for the console device

==============================================
Since the BSP behaivour changed in some details (console no
longer is polling, other memory layout etc) I have created a new
BSP "helas403" rather than changing the "papyrus" BSP. The old
"polled" console driver still sticks around in "console.c.polled"
To get the BSP up and running, I had to create the new BSP files
(derived from papyrus). Besides that, the following source areas
have been changed:

  • c/src/lib/libcpu/powerpc/ppc403: changes to console driver, small changes to clock driver, new "ictrl" interrupt controller driver
  • c/src/exec/score/cpu/powerpc/ppc.h: some small changes (added ppc403 characteristics like a exception vector prefix register, some special register definitions). I am quite sure, they are compatible with the existing sources, although I did not check
  • c/src/exec/score/cpu/powerpc/cpu.c: There is one severe limitation in the exception entries: Due to the current code arrangement, the "branch absolute" to the ISR handler may only jump to the first 128MByte or the last 128MByte of the 4GByte address range. When the ppc403 is running out of ROM, the ROM functions are located in the last 128MByte (0xFFF00000 and up). These addresses were not handled correctly (sign reduced) in "install_raw_handler". The change I added should work on existing ppc BSPs aswell...
  • c/src/lib/libc/termios.c: During my tests, I added one change you sent me, so this patch will already be incorporated in the current source tree.

There are some smaller changes, see the attached diff file.

=========================================
Concerning the GNU toolchain:

I tried several tool chains. Finally I almost succeeded with

egcs-1.0.3a with patch egcs-1.0.3-rtems-diff-19980527

I had to add the following lines to the egcs files. Without them
configure complaint that the cross compiler could not generate
executable output.

  • additional lines needed in egcs distribution in file gcc/config/rs6000/rtems.h:

+++ lines start
#undef STARTFILE_DEFAULT_SPEC
#define STARTFILE_DEFAULT_SPEC "ecrti.o%s"

#undef ENDFILE_DEFAULT_SPEC
#define ENDFILE_DEFAULT_SPEC "ecrtn.o%s"
++++ lines end

As far as I have seen in the Changelog of egcs, you have recently
sent two patches affecting the powerpc support, but they were
added in the wrong order.... :-(

egcs-19980628 with patch egcs-19980628-rtems-diff-19980707 does
not work!

I used binutils 2.9.1 with patch binutils-2.9.1-rtems-diff-19980515

(binutils 2.8.1 does not work, internal error in gas)

and newlib-1.8.0 with patch newlib-1.8.0-rtems-diff-19980707

Finally I had to poke a line in the "bit" script, since, on my LINUX
machine, the GNU make is only available as "make", not as
"gmake"...

For all the tools and newlib I selected configuration "powerpc-
rtems".


IMD Ingenieurbuero fuer Microcomputertechnik
Thomas Doerfler Herbststrasse 8
D-82178 Puchheim Germany
email: td@…

  • Property mode set to 100644
File size: 11.3 KB
Line 
1#
2#  Timing Test Suite Results for the Papyrus BSP
3#
4#  NOTE:  The Papyrus is a proprietary PPC403 based board.  But it is the
5#         only BSP currently available for the PowerPC family.
6#
7#  $Id$
8#
9
10NOTE:  This BSP is user submitted and no timing information
11       is currently avaiable.
12
13Board:                Papyrus
14CPU:                  IBM 403GA
15Clock Speed:          33 Mhz
16Memory Configuration: SRAM, DRAM, cache, etc
17Wait States:         
18
19Times Reported in:    cycles, microseconds, etc
20Timer Source:         Count Down Timer, on-CPU cycle counter, etc
21
22Column A:             unused
23Column B:             unused
24
25#                          DESCRIPTION                                 A    B
26== =================================================================  ==== ====
27 1 rtems_semaphore_create                                               20
28   rtems_semaphore_delete                                               21
29   rtems_semaphore_obtain: available                                    15
30   rtems_semaphore_obtain: not available -- NO_WAIT                     15
31   rtems_semaphore_release: no waiting tasks                            16
32
33 2 rtems_semaphore_obtain: not available -- caller blocks               62
34
35 3 rtems_semaphore_release: task readied -- preempts caller             55
36
37 4 rtems_task_restart: blocked task -- preempts caller                  77
38   rtems_task_restart: ready task -- preempts caller                    70
39   rtems_semaphore_release: task readied -- returns to caller           25
40   rtems_task_create                                                    57
41   rtems_task_start                                                     31
42   rtems_task_restart: suspended task -- returns to caller              36
43   rtems_task_delete: suspended task                                    47
44   rtems_task_restart: ready task -- returns to caller                  37
45   rtems_task_restart: blocked task -- returns to caller                46
46   rtems_task_delete: blocked task                                      50
47
48 5 rtems_task_suspend: calling task                                     51
49   rtems_task_resume: task readied -- preempts caller                   49
50
51 6 rtems_task_restart: calling task                                     59
52   rtems_task_suspend: returns to caller                                18
53   rtems_task_resume: task readied -- returns to caller                 19
54   rtems_task_delete: ready task                                        50
55
56 7 rtems_task_restart: suspended task -- preempts caller                70
57
58 8 rtems_task_set_priority: obtain current priority                     12
59   rtems_task_set_priority: returns to caller                           27
60   rtems_task_mode: obtain current mode                                  5
61   rtems_task_mode: no reschedule                                        5
62   rtems_task_mode: reschedule -- returns to caller                      8
63   rtems_task_mode: reschedule -- preempts caller                       39
64   rtems_task_set_note                                                  13
65   rtems_task_get_note                                                  13
66   rtems_clock_set                                                      33
67   rtems_clock_get                                                       3
68
69 9 rtems_message_queue_create                                          110
70   rtems_message_queue_send: no waiting tasks                           37
71   rtems_message_queue_urgent: no waiting tasks                         37
72   rtems_message_queue_receive: available                               31
73   rtems_message_queue_flush: no messages flushed                       12
74   rtems_message_queue_flush: messages flushed                          16
75   rtems_message_queue_delete                                           26
76
7710 rtems_message_queue_receive: not available -- NO_WAIT                15
78   rtems_message_queue_receive: not available -- caller blocks          62
79
8011 rtems_message_queue_send: task readied -- preempts caller            72
81
8212 rtems_message_queue_send: task readied -- returns to caller          39
83
8413 rtems_message_queue_urgent: task readied -- preempts caller          72
85
8614 rtems_message_queue_urgent: task readied -- returns to caller        39
87
8815 rtems_event_receive: obtain current events                            1
89   rtems_event_receive: not available -- NO_WAIT                        12
90   rtems_event_receive: not available -- caller blocks                  56
91   rtems_event_send: no task readied                                    12
92   rtems_event_receive: available                                       12
93   rtems_event_send: task readied -- returns to caller                  24
94
9516 rtems_event_send: task readied -- preempts caller                    55
96
9717 rtems_task_set_priority: preempts caller                             62
98
9918 rtems_task_delete: calling task                                      83
100
10119 rtems_signal_catch                                                    9
102   rtems_signal_send: returns to caller                                 15
103   rtems_signal_send: signal to self                                    18
104   exit ASR overhead: returns to calling task                           22
105   exit ASR overhead: returns to preempting task                        49
106
10720 rtems_partition_create                                               35
108   rtems_region_create                                                  23
109   rtems_partition_get_buffer: available                                15
110   rtems_partition_get_buffer: not available                            13
111   rtems_partition_return_buffer                                        18
112   rtems_partition_delete                                               16
113   rtems_region_get_segment: available                                  22
114   rtems_region_get_segment: not available -- NO_WAIT                   21
115   rtems_region_return_segment: no waiting tasks                        19
116   rtems_region_get_segment: not available -- caller blocks             64
117   rtems_region_return_segment: task readied -- preempts caller         74
118   rtems_region_return_segment: task readied -- returns to caller       44
119   rtems_region_delete                                                  16
120   rtems_io_initialize                                                   2
121   rtems_io_open                                                         1
122   rtems_io_close                                                        1
123   rtems_io_read                                                         1
124   rtems_io_write                                                        1
125   rtems_io_control                                                      1
126
12721 rtems_task_ident                                                    149
128   rtems_message_queue_ident                                           145
129   rtems_semaphore_ident                                               156
130   rtems_partition_ident                                               145
131   rtems_region_ident                                                  148
132   rtems_port_ident                                                    145
133   rtems_timer_ident                                                   145
134   rtems_rate_monotonic_ident                                          145
135
13622 rtems_message_queue_broadcast: task readied -- returns to caller     42
137   rtems_message_queue_broadcast: no waiting tasks                      17
138   rtems_message_queue_broadcast: task readied -- preempts caller       78
139
14023 rtems_timer_create                                                   14
141   rtems_timer_fire_after: inactive                                     22
142   rtems_timer_fire_after: active                                       24
143   rtems_timer_cancel: active                                           15
144   rtems_timer_cancel: inactive                                         13
145   rtems_timer_reset: inactive                                          21
146   rtems_timer_reset: active                                            23
147   rtems_timer_fire_when: inactive                                      34
148   rtems_timer_fire_when: active                                        34
149   rtems_timer_delete: active                                           19
150   rtems_timer_delete: inactive                                         17
151   rtems_task_wake_when                                                 69
152
15324 rtems_task_wake_after: yield -- returns to caller                     9
154   rtems_task_wake_after: yields -- preempts caller                     45
155
15625 rtems_clock_tick                                                      4
157
15826 _ISR_Disable                                                          0
159   _ISR_Flash                                                            1
160   _ISR_Enable                                                           1
161   _Thread_Disable_dispatch                                              0
162   _Thread_Enable_dispatch                                               7
163   _Thread_Set_state                                                    11
164   _Thread_Disptach (NO FP)                                             31
165   context switch: no floating point contexts                           21
166   context switch: self                                                 10
167   context switch: to another task                                      10
168   context switch: restore 1st FP task                                  25
169   fp context switch: save idle, restore idle                           31
170   fp context switch: save idle, restore initialized                    19
171   fp context switch: save initialized, restore initialized             20
172   _Thread_Resume                                                        7
173   _Thread_Unblock                                                       7
174   _Thread_Ready                                                         9
175   _Thread_Get                                                           4
176   _Semaphore_Get                                                        2
177   _Thread_Get: invalid id                                               0
178
17927 interrupt entry overhead: returns to interrupted task                 6
180   interrupt exit overhead: returns to interrupted task                  6
181   interrupt entry overhead: returns to nested interrupt                 6
182   interrupt exit overhead: returns to nested interrupt                  5
183   interrupt entry overhead: returns to preempting task                  7
184   interrupt exit overhead: returns to preempting task                  36
185
18628 rtems_port_create                                                    16
187   rtems_port_external_to_internal                                      11
188   rtems_port_internal_to_external                                      11
189   rtems_port_delete                                                    16
190
19129 rtems_rate_monotonic_create                                          15
192   rtems_rate_monotonic_period: initiate period -- returns to caller    21
193   rtems_rate_monotonic_period: obtain status                           13
194   rtems_rate_monotonic_cancel                                          16
195   rtems_rate_monotonic_delete: inactive                                18
196   rtems_rate_monotonic_delete: active                                  20
197   rtems_rate_monotonic_period: conclude periods -- caller blocks       53
Note: See TracBrowser for help on using the repository browser.