[9c448e1] | 1 | /* vectors.s 1.1 - 95/12/04 |
---|
| 2 | * |
---|
[6128a4a] | 3 | * This file contains the assembly code for the PowerPC |
---|
[9c448e1] | 4 | * interrupt veneers for RTEMS. |
---|
| 5 | * |
---|
| 6 | */ |
---|
| 7 | |
---|
| 8 | /* |
---|
| 9 | * The issue with this file is getting it loaded at the right place. |
---|
| 10 | * The first vector MUST be at address 0x????0100. |
---|
| 11 | * How this is achieved is dependant on the tool chain. |
---|
| 12 | * |
---|
| 13 | * However the basic mechanism for ELF assemblers is to create a |
---|
| 14 | * section called ".vectors", which will be loaded to an address |
---|
| 15 | * between 0x????0000 and 0x????0100 (inclusive) via a link script. |
---|
| 16 | * |
---|
| 17 | * The basic mechanism for XCOFF assemblers is to place it in the |
---|
| 18 | * normal text section, and arrange for this file to be located |
---|
| 19 | * at an appropriate position on the linker command line. |
---|
| 20 | * |
---|
| 21 | * The variable 'PPC_VECTOR_FILE_BASE' must be defined to be the |
---|
| 22 | * offset from 0x????0000 to the first location in the file. This |
---|
| 23 | * will usually be 0x0000 or 0x0100. |
---|
| 24 | * |
---|
| 25 | * $Id$ |
---|
| 26 | */ |
---|
| 27 | |
---|
[65c34da0] | 28 | #include <bsp.h> |
---|
[1c54724] | 29 | #include <rtems/asm.h> |
---|
[9c448e1] | 30 | |
---|
| 31 | #ifndef PPC_VECTOR_FILE_BASE |
---|
| 32 | #error "PPC_VECTOR_FILE_BASE is not defined." |
---|
| 33 | #endif |
---|
| 34 | |
---|
| 35 | #if (SCORE603E_USE_NONE) |
---|
| 36 | |
---|
| 37 | /* Where this file will be loaded */ |
---|
| 38 | .set file_base, PPC_VECTOR_FILE_BASE |
---|
| 39 | |
---|
| 40 | /* Vector offsets */ |
---|
| 41 | .set reset_vector,0x0100 |
---|
| 42 | .set mach_vector,0x0200 |
---|
| 43 | .set prot_vector,0x0300 |
---|
| 44 | .set isi_vector,0x0400 |
---|
| 45 | .set ext_vector,0x0500 |
---|
| 46 | .set align_vector,0x0600 |
---|
| 47 | .set prog_vector,0x0700 |
---|
| 48 | .set float_vector,0x0800 |
---|
| 49 | .set dec_vector,0x0900 |
---|
| 50 | .set sys_vector,0x00C00 |
---|
| 51 | .set trace_vector, 0x0d00 |
---|
| 52 | .set itm_vector,0x01000 |
---|
| 53 | .set dltm_vector,0x1100 |
---|
| 54 | .set dstm_vector,0x1200 |
---|
| 55 | .set addr_vector,0x1300 |
---|
| 56 | .set sysmgmt_vector,0x1400 |
---|
| 57 | |
---|
| 58 | /* Go to the right section */ |
---|
| 59 | #if PPC_ASM == PPC_ASM_ELF |
---|
| 60 | .section .vectors,"awx",@progbits |
---|
| 61 | #endif |
---|
| 62 | |
---|
| 63 | PUBLIC_VAR (__vectors) |
---|
| 64 | SYM (__vectors): |
---|
[6128a4a] | 65 | |
---|
[9c448e1] | 66 | /* Decrementer interrupt */ |
---|
[6128a4a] | 67 | .org reset_vector - file_base |
---|
| 68 | ba 0x00100 |
---|
| 69 | ba 0xfff00100 |
---|
| 70 | ba 0xfff00100 |
---|
[9c448e1] | 71 | ba 0xfff00100 |
---|
[6128a4a] | 72 | |
---|
| 73 | .org mach_vector - file_base |
---|
[9c448e1] | 74 | ba 0x00200 |
---|
| 75 | ba 0xfff00200 |
---|
| 76 | ba 0xfff00200 |
---|
| 77 | ba 0xfff00200 |
---|
[6128a4a] | 78 | |
---|
| 79 | .org prot_vector - file_base |
---|
[9c448e1] | 80 | ba 0x00300 |
---|
| 81 | ba 0xfff00300 |
---|
| 82 | ba 0xfff00300 |
---|
| 83 | ba 0xfff00300 |
---|
[6128a4a] | 84 | |
---|
| 85 | .org isi_vector - file_base |
---|
[9c448e1] | 86 | ba 0x00400 |
---|
| 87 | ba 0xfff00400 |
---|
| 88 | ba 0xfff00400 |
---|
| 89 | ba 0xfff00400 |
---|
[6128a4a] | 90 | |
---|
| 91 | .org ext_vector - file_base |
---|
| 92 | ba 0x0500 |
---|
| 93 | ba 0xfff00500 |
---|
| 94 | ba 0xfff00500 |
---|
| 95 | ba 0xfff00500 |
---|
| 96 | |
---|
| 97 | .org align_vector - file_base |
---|
| 98 | ba 0x00600 |
---|
| 99 | ba 0xfff00600 |
---|
| 100 | ba 0xfff00600 |
---|
| 101 | ba 0xfff00600 |
---|
| 102 | |
---|
| 103 | .org prog_vector - file_base |
---|
| 104 | ba 0x00700 |
---|
| 105 | ba 0xfff00700 |
---|
| 106 | ba 0xfff00700 |
---|
| 107 | ba 0xfff00700 |
---|
| 108 | |
---|
| 109 | .org float_vector - file_base |
---|
[9c448e1] | 110 | ba 0x00800 |
---|
| 111 | ba 0xfff00800 |
---|
| 112 | ba 0xfff00800 |
---|
| 113 | ba 0xfff00800 |
---|
| 114 | |
---|
[6128a4a] | 115 | .org dec_vector - file_base |
---|
[9c448e1] | 116 | rfi |
---|
| 117 | ba 0xfff00900 |
---|
| 118 | ba 0xfff00900 |
---|
| 119 | ba 0xfff00900 |
---|
[6128a4a] | 120 | |
---|
| 121 | .org sys_vector - file_base |
---|
| 122 | ba 0x0c00 |
---|
| 123 | ba 0xfff00C00 |
---|
| 124 | ba 0xfff00C00 |
---|
| 125 | ba 0xfff00C00 |
---|
| 126 | |
---|
| 127 | .org trace_vector - file_base |
---|
| 128 | ba 0x0d00 |
---|
| 129 | ba 0xfff00d00 |
---|
| 130 | ba 0xfff00d00 |
---|
| 131 | ba 0xfff00d00 |
---|
| 132 | |
---|
| 133 | .org itm_vector - file_base |
---|
| 134 | ba 0x01000 |
---|
| 135 | ba 0xfff01000 |
---|
| 136 | ba 0xfff01000 |
---|
| 137 | ba 0xfff01000 |
---|
| 138 | |
---|
| 139 | .org dltm_vector - file_base |
---|
| 140 | ba 0x01100 |
---|
| 141 | ba 0xfff01100 |
---|
| 142 | ba 0xfff01100 |
---|
| 143 | ba 0xfff01100 |
---|
| 144 | |
---|
| 145 | .org dstm_vector - file_base |
---|
| 146 | ba 0x1200 |
---|
| 147 | ba 0xfff01200 |
---|
| 148 | ba 0xfff01200 |
---|
| 149 | ba 0xfff01200 |
---|
| 150 | |
---|
| 151 | .org addr_vector - file_base |
---|
| 152 | ba 0x1300 |
---|
| 153 | ba 0xfff01300 |
---|
| 154 | ba 0xfff01300 |
---|
| 155 | ba 0xfff01300 |
---|
| 156 | |
---|
| 157 | .org sysmgmt_vector - file_base |
---|
| 158 | ba 0x1400 |
---|
| 159 | ba 0xfff01400 |
---|
| 160 | ba 0xfff01400 |
---|
| 161 | ba 0xfff01400 |
---|
[9c448e1] | 162 | #endif |
---|