Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 3efc35a in mainline


Ignore:
Timestamp:
2013-09-16T19:16:00Z (8 years ago)
Author:
Jakub Klama <jakub.klama@…>
Branches:
lfn, master
Children:
f7bb6d1
Parents:
ef9a2a8
Message:

Construct full exception and interrupt table.

Location:
kernel/arch/sparc32
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc32/include/arch/exception.h

    ref9a2a8 r3efc35a  
    5959extern void privileged_instruction(int n, istate_t *istate);
    6060extern void fp_disabled(int n, istate_t *istate);
     61extern void fp_exception(int n, istate_t *istate);
     62extern void tag_overflow(int n, istate_t *istate);
    6163extern void division_by_zero(int n, istate_t *istate);
    6264extern void data_access_exception(int n, istate_t *istate);
    6365extern void data_access_error(int n, istate_t *istate);
     66extern void data_access_mmu_miss(int n, istate_t *istate);
     67extern void data_store_error(int n, istate_t *istate);
    6468extern void mem_address_not_aligned(int n, istate_t *istate);
    6569
  • kernel/arch/sparc32/src/exception.c

    ref9a2a8 r3efc35a  
    8080}
    8181
     82/** Handle fp_exception. (0x08) */
     83void fp_exception(int n, istate_t *istate)
     84{
     85        fault_if_from_uspace(istate, "%s.", __func__);
     86        panic_badtrap(istate, n, "%s.", __func__);
     87}
     88
     89/** Handle tag_overflow. (0x0a) */
     90void tag_overflow(int n, istate_t *istate)
     91{
     92        fault_if_from_uspace(istate, "%s.", __func__);
     93        panic_badtrap(istate, n, "%s.", __func__);
     94}
     95
    8296/** Handle division_by_zero. (0x2a) */
    8397void division_by_zero(int n, istate_t *istate)
     
    101115}
    102116
     117/** Handle data_store_error. (0x29) */
     118void data_store_error(int n, istate_t *istate)
     119{
     120        fault_if_from_uspace(istate, "%s.", __func__);
     121        panic_badtrap(istate, n, "%s.", __func__);
     122}
     123/** Handle data_access_error. (0x2c) */
     124void data_access_mmu_miss(int n, istate_t *istate)
     125{
     126        fault_if_from_uspace(istate, "%s.", __func__);
     127        panic_badtrap(istate, n, "%s.", __func__);
     128}
     129
    103130/** Handle mem_address_not_aligned. (0x7) */
    104131void mem_address_not_aligned(int n, istate_t *istate)
  • kernel/arch/sparc32/src/trap_table.S

    ref9a2a8 r3efc35a  
    118118#define TRAP(_vector, _handler) \
    119119        .org trap_table + _vector * TRAP_ENTRY_SIZE; \
    120         mov   %psr, %l0 ; \
     120        mov %psr, %l0 ; \
    121121        sethi %hi(_handler), %l4 ; \
    122         jmp   %l4+%lo(_handler); \
    123         mov   _vector, %l3 ;
     122        jmp %l4 + %lo(_handler); \
     123        mov _vector, %l3 ;
     124
     125#define INTERRUPT(_vector, _priority) \
     126        .org trap_table + _vector * TRAP_ENTRY_SIZE; \
     127        mov %psr, %l0 ; \
     128        mov _priority, %g2 ; \
     129        call exc_dispatch ; \
     130        nop ;
    124131
    125132#define BADTRAP(_vector) \
     
    129136.align TRAP_TABLE_SIZE
    130137trap_table:
    131         TRAP(0, reset_trap)
    132         BADTRAP(1)
    133         TRAP(2, illegal_instruction)
    134         TRAP(3, privileged_instruction)
    135         TRAP(4, fp_disabled)
    136         TRAP(5, window_overflow_trap)
    137         TRAP(6, window_underflow_trap)
    138         BADTRAP(7)
    139         BADTRAP(8)
    140         BADTRAP(9)
    141         BADTRAP(10)
    142         BADTRAP(11)
    143         BADTRAP(12)
    144         BADTRAP(13)
    145         BADTRAP(14)
    146         BADTRAP(15)
    147         BADTRAP(16)
    148         BADTRAP(17)
    149         BADTRAP(18)
    150         BADTRAP(19)
    151         BADTRAP(20)
    152         BADTRAP(21)
    153         BADTRAP(22)
    154         BADTRAP(23)
    155         BADTRAP(24)
    156         BADTRAP(25)
    157         BADTRAP(26)
    158         BADTRAP(27)
    159         BADTRAP(28)
    160         BADTRAP(29)
    161         BADTRAP(30)
    162         BADTRAP(31)
    163         BADTRAP(32)
    164         BADTRAP(33)
    165         BADTRAP(34)
    166         BADTRAP(35)
    167         BADTRAP(36)
    168         BADTRAP(37)
    169         BADTRAP(38)
    170         BADTRAP(39)
    171         BADTRAP(40)
    172         BADTRAP(41)
    173         BADTRAP(42)
    174         BADTRAP(43)
    175         BADTRAP(44)
    176         BADTRAP(45)
    177         BADTRAP(46)
    178         BADTRAP(47)
    179         BADTRAP(48)
    180         BADTRAP(49)
    181         BADTRAP(50)
    182         BADTRAP(51)
    183         BADTRAP(52)
    184         BADTRAP(53)
    185         BADTRAP(54)
    186         BADTRAP(55)
    187         BADTRAP(56)
    188         BADTRAP(57)
    189         BADTRAP(58)
    190         BADTRAP(59)
    191         BADTRAP(60)
    192         BADTRAP(61)
    193         BADTRAP(62)
    194         BADTRAP(63)
    195         BADTRAP(64)
    196         BADTRAP(65)
    197         BADTRAP(66)
    198         BADTRAP(67)
    199         BADTRAP(68)
    200         BADTRAP(69)
    201         BADTRAP(70)
    202         BADTRAP(71)
    203         BADTRAP(72)
    204         BADTRAP(73)
    205         BADTRAP(74)
    206         BADTRAP(75)
    207         BADTRAP(76)
    208         BADTRAP(77)
    209         BADTRAP(78)
    210         BADTRAP(79)
    211         BADTRAP(80)
    212         BADTRAP(81)
    213         BADTRAP(82)
    214         BADTRAP(83)
    215         BADTRAP(84)
    216         BADTRAP(85)
    217         BADTRAP(86)
    218         BADTRAP(87)
    219         BADTRAP(88)
    220         BADTRAP(89)
    221         BADTRAP(90)
    222         BADTRAP(91)
    223         BADTRAP(92)
    224         BADTRAP(93)
    225         BADTRAP(94)
    226         BADTRAP(95)
    227         BADTRAP(96)
    228         BADTRAP(97)
    229         BADTRAP(98)
    230         BADTRAP(99)
    231         BADTRAP(100)
    232         BADTRAP(101)
    233         BADTRAP(102)
    234         BADTRAP(103)
    235 
     138        TRAP(0x0, reset_trap)
     139        TRAP(0x1, instruction_access_exception)
     140        TRAP(0x2, illegal_instruction)
     141        TRAP(0x3, privileged_instruction)
     142        TRAP(0x4, fp_disabled)
     143        TRAP(0x5, window_overflow_trap)
     144        TRAP(0x6, window_underflow_trap)
     145        TRAP(0x7, mem_address_not_aligned)
     146        TRAP(0x8, fp_exception)
     147        TRAP(0x9, data_access_exception)
     148        TRAP(0xa, tag_overflow)
     149        BADTRAP(0xb)
     150        BADTRAP(0xc)
     151        BADTRAP(0xd)
     152        BADTRAP(0xe)
     153        BADTRAP(0xf)
     154        BADTRAP(0x10)
     155        INTERRUPT(0x11, 1)
     156        INTERRUPT(0x12, 2)
     157        INTERRUPT(0x13, 3)
     158        INTERRUPT(0x14, 4)
     159        INTERRUPT(0x15, 5)
     160        INTERRUPT(0x16, 6)
     161        INTERRUPT(0x17, 7)
     162        INTERRUPT(0x18, 8)
     163        INTERRUPT(0x19, 9)
     164        INTERRUPT(0x1a, 10)
     165        INTERRUPT(0x1b, 11)
     166        INTERRUPT(0x1c, 12)
     167        INTERRUPT(0x1d, 13)
     168        INTERRUPT(0x1e, 14)
     169        INTERRUPT(0x1f, 15)
     170        TRAP(0x21, instruction_access_error)
     171        BADTRAP(0x22)
     172        BADTRAP(0x23)
     173        BADTRAP(0x24)
     174        BADTRAP(0x25)
     175        BADTRAP(0x26)
     176        BADTRAP(0x27)
     177        BADTRAP(0x28)
     178        TRAP(0x29, data_access_error)
     179        TRAP(0x2a, division_by_zero)
     180        TRAP(0x2b, data_store_error)
     181        TRAP(0x2c, data_access_mmu_miss)
     182        BADTRAP(0x2d)
     183        BADTRAP(0x2e)
     184        BADTRAP(0x2f)
     185        BADTRAP(0x30)
     186        BADTRAP(0x31)
     187        BADTRAP(0x32)
     188        BADTRAP(0x33)
     189        BADTRAP(0x34)
     190        BADTRAP(0x35)
     191        BADTRAP(0x36)
     192        BADTRAP(0x37)
     193        BADTRAP(0x38)
     194        BADTRAP(0x39)
     195        BADTRAP(0x3a)
     196        BADTRAP(0x3b)
     197        BADTRAP(0x3c)
     198        BADTRAP(0x3d)
     199        BADTRAP(0x3e)
     200        BADTRAP(0x3f)
     201        BADTRAP(0x40)
     202        BADTRAP(0x41)
     203        BADTRAP(0x42)
     204        BADTRAP(0x43)
     205        BADTRAP(0x44)
     206        BADTRAP(0x45)
     207        BADTRAP(0x46)
     208        BADTRAP(0x47)
     209        BADTRAP(0x48)
     210        BADTRAP(0x49)
     211        BADTRAP(0x4a)
     212        BADTRAP(0x4b)
     213        BADTRAP(0x4c)
     214        BADTRAP(0x4d)
     215        BADTRAP(0x4e)
     216        BADTRAP(0x4f)
     217        BADTRAP(0x50)
     218        BADTRAP(0x51)
     219        BADTRAP(0x52)
     220        BADTRAP(0x53)
     221        BADTRAP(0x54)
     222        BADTRAP(0x55)
     223        BADTRAP(0x56)
     224        BADTRAP(0x57)
     225        BADTRAP(0x58)
     226        BADTRAP(0x59)
     227        BADTRAP(0x5a)
     228        BADTRAP(0x5b)
     229        BADTRAP(0x5c)
     230        BADTRAP(0x5d)
     231        BADTRAP(0x5e)
     232        BADTRAP(0x5f)
     233        BADTRAP(0x60)
     234        BADTRAP(0x61)
     235        BADTRAP(0x62)
     236        BADTRAP(0x63)
     237        BADTRAP(0x64)
     238        BADTRAP(0x65)
     239        BADTRAP(0x66)
     240        BADTRAP(0x67)
     241        BADTRAP(0x68)
     242        BADTRAP(0x69)
     243        BADTRAP(0x6a)
     244        BADTRAP(0x6b)
     245        BADTRAP(0x6c)
     246        BADTRAP(0x6d)
     247        BADTRAP(0x6e)
     248        BADTRAP(0x6f)
     249        BADTRAP(0x70)
     250        BADTRAP(0x71)
     251        BADTRAP(0x72)
     252        BADTRAP(0x73)
     253        BADTRAP(0x74)
     254        BADTRAP(0x75)
     255        BADTRAP(0x76)
     256        BADTRAP(0x77)
     257        BADTRAP(0x78)
     258        BADTRAP(0x79)
     259        BADTRAP(0x7a)
     260        BADTRAP(0x7b)
     261        BADTRAP(0x7c)
     262        BADTRAP(0x7d)
     263        BADTRAP(0x7e)
     264        BADTRAP(0x7f)
     265
Note: See TracChangeset for help on using the changeset viewer.