[f48b1000] | 1 | @c |
---|
| 2 | @c COPYRIGHT (c) 1988-1998. |
---|
| 3 | @c On-Line Applications Research Corporation (OAR). |
---|
| 4 | @c All rights reserved. |
---|
| 5 | @c |
---|
| 6 | @c $Id$ |
---|
| 7 | @c |
---|
| 8 | |
---|
| 9 | @chapter Processor Dependent Information Table |
---|
| 10 | |
---|
| 11 | @section Introduction |
---|
| 12 | |
---|
| 13 | Any highly processor dependent information required |
---|
| 14 | to describe a processor to RTEMS is provided in the CPU |
---|
| 15 | Dependent Information Table. This table is not required for all |
---|
| 16 | processors supported by RTEMS. This chapter describes the |
---|
| 17 | contents, if any, for a particular processor type. |
---|
| 18 | |
---|
| 19 | @section CPU Dependent Information Table |
---|
| 20 | |
---|
| 21 | The XXX version of the RTEMS CPU Dependent |
---|
| 22 | Information Table contains the information required to interface |
---|
| 23 | a Board Support Package and RTEMS on the XXX. This |
---|
| 24 | information is provided to allow RTEMS to interoperate |
---|
| 25 | effectively with the BSP. The C structure definition is given |
---|
| 26 | here: |
---|
| 27 | |
---|
| 28 | @example |
---|
| 29 | @group |
---|
| 30 | typedef struct @{ |
---|
| 31 | void (*pretasking_hook)( void ); |
---|
| 32 | void (*predriver_hook)( void ); |
---|
| 33 | void (*postdriver_hook)( void ); |
---|
| 34 | void (*idle_task)( void ); |
---|
| 35 | boolean do_zero_of_workspace; |
---|
| 36 | unsigned32 idle_task_stack_size; |
---|
| 37 | unsigned32 interrupt_stack_size; |
---|
| 38 | unsigned32 extra_mpci_receive_server_stack; |
---|
| 39 | void * (*stack_allocate_hook)( unsigned32 ); |
---|
| 40 | void (*stack_free_hook)( void* ); |
---|
| 41 | /* end of fields required on all CPUs */ |
---|
| 42 | |
---|
| 43 | /* XXX CPU family dependent stuff */ |
---|
| 44 | @} rtems_cpu_table; |
---|
| 45 | @end group |
---|
| 46 | @end example |
---|
| 47 | |
---|
| 48 | @table @code |
---|
| 49 | @item pretasking_hook |
---|
| 50 | is the address of the user provided routine which is invoked |
---|
| 51 | once RTEMS APIs are initialized. This routine will be invoked |
---|
| 52 | before any system tasks are created. Interrupts are disabled. |
---|
| 53 | This field may be NULL to indicate that the hook is not utilized. |
---|
| 54 | |
---|
| 55 | @item predriver_hook |
---|
| 56 | is the address of the user provided |
---|
| 57 | routine that is invoked immediately before the |
---|
| 58 | the device drivers and MPCI are initialized. RTEMS |
---|
| 59 | initialization is complete but interrupts and tasking are disabled. |
---|
| 60 | This field may be NULL to indicate that the hook is not utilized. |
---|
| 61 | |
---|
| 62 | @item postdriver_hook |
---|
| 63 | is the address of the user provided |
---|
| 64 | routine that is invoked immediately after the |
---|
| 65 | the device drivers and MPCI are initialized. RTEMS |
---|
| 66 | initialization is complete but interrupts and tasking are disabled. |
---|
| 67 | This field may be NULL to indicate that the hook is not utilized. |
---|
| 68 | |
---|
| 69 | @item idle_task |
---|
| 70 | is the address of the optional user |
---|
| 71 | provided routine which is used as the system's IDLE task. If |
---|
| 72 | this field is not NULL, then the RTEMS default IDLE task is not |
---|
| 73 | used. This field may be NULL to indicate that the default IDLE |
---|
| 74 | is to be used. |
---|
| 75 | |
---|
| 76 | @item do_zero_of_workspace |
---|
| 77 | indicates whether RTEMS should |
---|
| 78 | zero the Workspace as part of its initialization. If set to |
---|
| 79 | TRUE, the Workspace is zeroed. Otherwise, it is not. |
---|
| 80 | |
---|
| 81 | @item idle_task_stack_size |
---|
| 82 | is the size of the RTEMS idle task stack in bytes. |
---|
| 83 | If this number is less than MINIMUM_STACK_SIZE, then the |
---|
| 84 | idle task's stack will be MINIMUM_STACK_SIZE in byte. |
---|
| 85 | |
---|
| 86 | @item interrupt_stack_size |
---|
| 87 | is the size of the RTEMS |
---|
| 88 | allocated interrupt stack in bytes. This value must be at least |
---|
| 89 | as large as MINIMUM_STACK_SIZE. |
---|
| 90 | |
---|
| 91 | @item extra_mpci_receive_server_stack |
---|
| 92 | is the extra stack space allocated for the RTEMS MPCI receive server task |
---|
| 93 | in bytes. The MPCI receive server may invoke nearly all directives and |
---|
| 94 | may require extra stack space on some targets. |
---|
| 95 | |
---|
| 96 | @item stack_allocate_hook |
---|
| 97 | is the address of the optional user provided routine which allocates |
---|
| 98 | memory for task stacks. If this hook is not NULL, then a stack_free_hook |
---|
| 99 | must be provided as well. |
---|
| 100 | |
---|
| 101 | @item stack_free_hook |
---|
| 102 | is the address of the optional user provided routine which frees |
---|
| 103 | memory for task stacks. If this hook is not NULL, then a stack_allocate_hook |
---|
| 104 | must be provided as well. |
---|
| 105 | |
---|
| 106 | @item XXX |
---|
| 107 | is where the CPU family dependent stuff goes. |
---|
| 108 | |
---|
| 109 | @end table |
---|