Changeset 32e8cd1 in mainline for kernel/arch/sparc32/src/trap_table.S


Ignore:
Timestamp:
2013-12-28T17:16:44Z (10 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c1023bcb
Parents:
f6f22cdb
Message:

code revision
coding style fixes
removal of debugging printouts and other temporary stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc32/src/trap_table.S

    rf6f22cdb r32e8cd1  
    4646        clr \reg
    4747        mov %wim, %g5
    48 1:      andcc %g5, 1, %g0
    49         bne 2f
    50         nop
    51         srl %g5, 1, %g5
    52         inc \reg
    53         b 1b
    54 2:      nop
    55 
     48       
     49        1:
     50                andcc %g5, 1, %g0
     51                bne 2f
     52                nop
     53                srl %g5, 1, %g5
     54                inc \reg
     55                b 1b
     56       
     57        2:
     58                nop
    5659.endm
    5760
     
    6366.macro switch_to_invalid saved_wim, saved_psr
    6467        get_wim_number %l3
    65         mov %wim, \saved_wim    ! save WIM
    66         mov %g0, %wim           ! clear WIM
    67         mov %psr, \saved_psr    ! read PSR
     68        mov %wim, \saved_wim    ! save WIM
     69        mov %g0, %wim           ! clear WIM
     70        mov %psr, \saved_psr    ! read PSR
    6871        and \saved_psr, 0xfffffff0, %l4
    69         or %l4, %l3, %l3        ! set CWP
    70         mov %l3, %psr           ! write PSR
    71         nop
    72         nop
    73         nop
    74         nop                     ! wait for PSR to be effective
    75 .endm   
     72        or %l4, %l3, %l3        ! set CWP
     73        mov %l3, %psr           ! write PSR
     74        nop
     75        nop
     76        nop
     77        nop                     ! wait for PSR to be effective
     78.endm
    7679
    7780.macro switch_back wim, psr
    78         mov \wim, %wim          ! saved WIM
    79         mov \psr, %psr          ! saved PSR
     81        mov \wim, %wim          ! saved WIM
     82        mov \psr, %psr          ! saved PSR
    8083        nop
    8184        nop
     
    8992        sll %l3, 7, %l4
    9093        srl %l3, 1, %l3
    91         or  %l3, %l4, %l3
     94        or %l3, %l4, %l3
    9295        and %l3, 0xff, %l3
    9396        mov %g0, %wim
    94 
     97       
    9598        mov %l5, %g5
    9699        mov %l6, %g6
    97100        mov %l7, %g7
    98 
     101       
    99102        save
    100         std %l0, [%sp +  0]
    101         std %l2, [%sp +  8]
     103        std %l0, [%sp + 0]
     104        std %l2, [%sp + 8]
    102105        std %l4, [%sp + 16]
    103106        std %l6, [%sp + 24]
     
    117120        sll %l3, 7, %l4
    118121        srl %l3, 1, %l3
    119         or  %l3, %l4, %l3
     122        or %l3, %l4, %l3
    120123        and %l3, 0xff, %l3
    121124        mov %g0, %wim
    122125        mov \uwb, %g3
    123 
     126       
    124127        mov %l5, %g5
    125128        mov %l6, %g6
    126129        mov %l7, %g7
    127 
     130       
    128131        save
    129         std %l0, [%g3 +  0]
    130         std %l2, [%g3 +  8]
     132        std %l0, [%g3 + 0]
     133        std %l2, [%g3 + 8]
    131134        std %l4, [%g3 + 16]
    132135        std %l6, [%g3 + 24]
     
    148151        srl %l3, 7, %l4
    149152        sll %l3, 1, %l3
    150         or  %l3, %l4, %l3
     153        or %l3, %l4, %l3
    151154        and %l3, 0xff, %l3
    152155       
     
    160163        mov %g6, %l6
    161164        mov %g7, %l7
    162         save   
    163 
    164         ldd [%sp +  0], %l0
    165         ldd [%sp +  8], %l2
    166         ldd [%sp + 16], %l4
    167         ldd [%sp + 24], %l6
    168         ldd [%sp + 32], %i0
    169         ldd [%sp + 40], %i2
    170         ldd [%sp + 48], %i4
    171         ldd [%sp + 56], %i6
     165        save
     166       
     167        ldd [%sp +  0], %l0
     168        ldd [%sp +  8], %l2
     169        ldd [%sp + 16], %l4
     170        ldd [%sp + 24], %l6
     171        ldd [%sp + 32], %i0
     172        ldd [%sp + 40], %i2
     173        ldd [%sp + 48], %i4
     174        ldd [%sp + 56], %i6
    172175        save
    173176       
     
    179182        srl %l3, 7, %l4
    180183        sll %l3, 1, %l3
    181         or  %l3, %l4, %l3
     184        or %l3, %l4, %l3
    182185        and %l3, 0xff, %l3
    183 
     186       
    184187        mov %g0, %wim
    185188        restore
     
    191194        mov %g6, %l6
    192195        mov %g7, %l7
    193         save   
    194 
     196        save
     197       
    195198        sub \uwb, 64, \uwb
    196         ldd [\uwb +  0], %l0
    197         ldd [\uwb +  8], %l2
     199        ldd [\uwb + 0], %l0
     200        ldd [\uwb + 8], %l2
    198201        ldd [\uwb + 16], %l4
    199202        ldd [\uwb + 24], %l6
     
    203206        ldd [\uwb + 56], %i6
    204207        save
    205 
     208       
    206209        mov %l3, %wim
    207210.endm
     
    261264window_overflow_trap:
    262265        mov %g7, %l0
    263 
     266       
    264267        /* Check whether previous mode was usermode */
    265268        mov %psr, %l4
     
    268271        bne 1f
    269272        nop
    270 
    271         /* userspace: */
    272         /* time to check whether desired stack page is mapped
    273          * on the MMU. if so, process with saving window directly.
    274          * if not, go to preemptible trap handler */
     273       
     274        /* User space: */
     275       
     276        /*
     277         * Time to check whether desired stack page is mapped
     278         * on the MMU. If so, process with saving window directly.
     279         * If not, go to preemptible trap handler.
     280         */
    275281        mov %wim, %g5
    276282        mov %g0, %wim
     
    279285        restore
    280286        mov %g5, %wim
    281 
     287       
    282288        /* Check beginning of %sp */
    283289        and %g4, 0xfffff000, %l4
     
    286292        bne 1f
    287293        nop
    288 
    289         /* prepare args for preemptible handler */
     294       
     295        /* Prepare args for preemptible handler */
    290296        mov %g4, %o0
    291297        set preemptible_save_uspace, %o2
    292298        b preemptible_trap
    293299        nop
    294 
     300       
    295301        /* Check end of %sp */
    296302        add %g4, 56, %g4
     
    300306        bne 1f
    301307        nop
    302 
    303         /* prepare args for preemptible handler */
     308       
     309        /* Prepare args for preemptible handler */
    304310        mov %g4, %o0
    305311        set preemptible_save_uspace, %o2
    306312        b preemptible_trap
    307313        nop
    308 
    309         /* kernel: */
    310 1:      /* rotate WIM on bit right, we have 8 windows */
    311         mov %wim, %l3
    312         sll %l3, 7, %l4
    313         srl %l3, 1, %l3
    314         or  %l3, %l4, %l3
    315         and %l3, 0xff, %l3
    316 
    317         /* disable WIM traps */
    318         mov %g0,%wim
    319         nop; nop; nop
    320 
    321         /* Save invalid window data */
    322         mov %l5, %g5            ! kernel stack pointer
    323         mov %l6, %g6            ! kernel wbuf
    324         mov %l7, %g7
    325 
    326 
    327         /* we should check whether window needs to be saved
    328          * to kernel stack or uwb
    329          */
    330         cmp %g7, 0
    331         bne 2f
    332         nop
    333 
    334         /* dump registers to stack */
     314       
     315        /* Kernel: */
     316       
     317        1:
     318                /* Rotate WIM on bit right, we have 8 windows */
     319                mov %wim, %l3
     320                sll %l3, 7, %l4
     321                srl %l3, 1, %l3
     322                or %l3, %l4, %l3
     323                and %l3, 0xff, %l3
     324               
     325                /* Disable WIM traps */
     326                mov %g0,%wim
     327                nop; nop; nop
     328               
     329                /* Save invalid window data */
     330                mov %l5, %g5        ! kernel stack pointer
     331                mov %l6, %g6        ! kernel wbuf
     332                mov %l7, %g7
     333               
     334                /*
     335                 * We should check whether window needs to be saved
     336                 * to kernel stack or uwb.
     337                 */
     338                cmp %g7, 0
     339                bne 2f
     340                nop
     341       
     342        /* Dump registers to stack */
    335343        save
    336         std %l0, [%sp +  0]
    337         std %l2, [%sp +  8]
     344        std %l0, [%sp + 0]
     345        std %l2, [%sp + 8]
    338346        std %l4, [%sp + 16]
    339347        std %l6, [%sp + 24]
     
    344352        b 3f
    345353        nop
    346 
    347         /* dump registers to uwb */
    348 2:      save
    349         std %l0, [%g6 +  0]
    350         std %l2, [%g6 +  8]
    351         std %l4, [%g6 + 16]
    352         std %l6, [%g6 + 24]
    353         std %i0, [%g6 + 32]
    354         std %i2, [%g6 + 40]
    355         std %i4, [%g6 + 48]
    356         std %i6, [%g6 + 56]
    357         add %g6, 64, %g6
    358 
    359         /* check whether it's the last user window to be saved */
    360         and %g7, 0x7, %l5
    361         mov %psr, %l4
    362         and %l4, 0x7, %l4
    363         cmp %l5, %l4
    364         bne 3f
    365         nop
    366 
    367         /* clear uspace window mark */
     354       
     355        /* Dump registers to uwb */
     356        2:
     357                save
     358                std %l0, [%g6 + 0]
     359                std %l2, [%g6 + 8]
     360                std %l4, [%g6 + 16]
     361                std %l6, [%g6 + 24]
     362                std %i0, [%g6 + 32]
     363                std %i2, [%g6 + 40]
     364                std %i4, [%g6 + 48]
     365                std %i6, [%g6 + 56]
     366                add %g6, 64, %g6
     367               
     368                /* Check whether it's the last user window to be saved */
     369                and %g7, 0x7, %l5
     370                mov %psr, %l4
     371                and %l4, 0x7, %l4
     372                cmp %l5, %l4
     373                bne 3f
     374                nop
     375       
     376        /* Clear uspace window mark */
    368377        clr %g7
    369 
    370 3:      /* back to where we should be */
    371         mov %g5, %l5
    372         mov %g6, %l6
    373         mov %g7, %l7
    374         restore
    375 
    376         /* set new value of window */
    377         mov %l3,%wim
    378         nop; nop; nop
    379 
    380         /* go home */
    381         mov %l0, %g7
    382         jmp %l1
    383         rett %l2
     378       
     379        3:
     380                /* Back to where we should be */
     381                mov %g5, %l5
     382                mov %g6, %l6
     383                mov %g7, %l7
     384                restore
     385               
     386                /* Set new value of window */
     387                mov %l3,%wim
     388                nop; nop; nop
     389               
     390                /* Go home */
     391                mov %l0, %g7
     392                jmp %l1
     393                rett %l2
    384394
    385395window_underflow_trap:
    386396        mov %g7, %l0
    387 
     397       
    388398        /* Check whether previous mode was usermode */
    389399        mov %psr, %l4
     
    392402        bne 1f
    393403        nop
    394 
    395         /* userspace: */
    396         /* time to check whether desired stack page is mapped
    397          * on the MMU. if so, process with saving window directly.
    398          * if not, go to preemptible trap handler */
     404       
     405        /* User space: */
     406       
     407        /*
     408         * Time to check whether desired stack page is mapped
     409         * on the MMU. If so, process with saving window directly.
     410         * If not, go to preemptible trap handler.
     411         */
    399412        mov %wim, %g5
    400413        mov %g0, %wim
     
    410423        bne 1f
    411424        nop
    412 
    413         /* prepare args for preemptible handler */
     425       
     426        /* Prepare args for preemptible handler */
    414427        mov %g4, %o0
    415428        set preemptible_restore_uspace, %o2
    416429        b preemptible_trap
    417430        nop
    418 
    419         /* rotate WIM on bit LEFT, we have 8 windows */
    420 1:      mov %wim,%l3
    421         srl %l3,7,%l4
    422         sll %l3,1,%l3
    423         or  %l3,%l4,%l3
    424         and %l3, 0xff,%l3
    425 
    426         /* disable WIM traps */
    427         mov %g0,%wim
    428         nop; nop; nop
    429 
    430         /* kernel: */
     431       
     432       
     433        1:
     434                /* Rotate WIM on bit LEFT, we have 8 windows */
     435                mov %wim, %l3
     436                srl %l3, 7, %l4
     437                sll %l3, 1, %l3
     438                or %l3, %l4, %l3
     439                and %l3, 0xff, %l3
     440               
     441                /* Disable WIM traps */
     442                mov %g0, %wim
     443                nop; nop; nop
     444               
     445        /* Kernel: */
    431446        restore
    432447        restore
    433         mov %l5, %g5            ! kernel stack pointer
    434         mov %l6, %g6            ! kernel wbuf
     448        mov %l5, %g5            ! kernel stack pointer
     449        mov %l6, %g6            ! kernel wbuf
    435450        mov %l7, %g7
    436 
    437         ldd [%sp + 0], %l0
    438         ldd [%sp + 8], %l2
    439         ldd [%sp + 16], %l4
    440         ldd [%sp + 24], %l6
    441         ldd [%sp + 32], %i0
    442         ldd [%sp + 40], %i2
    443         ldd [%sp + 48], %i4
    444         ldd [%sp + 56], %i6
     451       
     452        ldd [%sp + 0], %l0
     453        ldd [%sp + 8], %l2
     454        ldd [%sp + 16], %l4
     455        ldd [%sp + 24], %l6
     456        ldd [%sp + 32], %i0
     457        ldd [%sp + 40], %i2
     458        ldd [%sp + 48], %i4
     459        ldd [%sp + 56], %i6
    445460        b 2f
    446461        nop
    447 
    448 2:      /* Restore invalid window data */
    449         restore
    450         mov %g5, %l5
    451         mov %g6, %l6
    452         mov %g7, %l7
    453         save
    454         save
    455         save
    456 
    457         /* Set new value of window */
    458         mov %l3,%wim
    459         nop; nop; nop
    460 
    461         /* go home */
    462         mov %l0, %g7
    463         jmp %l1
    464         rett %l2
     462       
     463        2:
     464                /* Restore invalid window data */
     465                restore
     466                mov %g5, %l5
     467                mov %g6, %l6
     468                mov %g7, %l7
     469                save
     470                save
     471                save
     472               
     473                /* Set new value of window */
     474                mov %l3, %wim
     475                nop; nop; nop
     476               
     477                /* Go home */
     478                mov %l0, %g7
     479                jmp %l1
     480                rett %l2
    465481
    466482flush_windows:
    467         mov 7, %g1
    468 1:      subcc %g1, 1, %g1
    469         bg 1b
    470         save %sp, -64, %sp
    471 
    472483        mov 7, %g1
    473 1:      subcc %g1, 1, %g1
    474         bg 1b
    475         restore
    476 
    477         retl
    478         nop
     484        1:
     485                subcc %g1, 1, %g1
     486                bg 1b
     487                save %sp, -64, %sp
     488       
     489        mov 7, %g1
     490        1:
     491                subcc %g1, 1, %g1
     492                bg 1b
     493                restore
     494       
     495        retl
     496        nop
    479497
    480498preemptible_trap:
    481499        /* Save %g7 */
    482500        mov %g7, %l0
    483 
     501       
    484502        /* Check whether we landed in invalid window */
    485503        get_wim_number %g6
     
    488506        bne 4f
    489507        nop
    490 
    491         /* We are in invalid window. Check whether previous mode was usermode */
     508       
     509        /* We are in invalid window. Check whether previous mode was usermode. */
    492510        if_from_kernel 3f
    493 
    494         /* Trap originated from uspace */
     511       
     512        /* Trap originated from user space */
    495513        /* Kernel stack pointer is at %l5, uwb is at %l6 */
    496514        inline_save_uspace %l6
    497 
    498         /* set uspace window mark */
     515       
     516        /* Set uspace window mark */
    499517        mov %psr, %l7
    500518        inc %l7
     
    503521        b 4f
    504522        nop
    505 
    506 3:      /* Trap originated from kernel */
    507         inline_save_kernel
    508 
    509 4:      /* Check whether previous mode was usermode */
    510         if_from_kernel 5f
    511 
     523       
     524        3:
     525                /* Trap originated from kernel */
     526                inline_save_kernel
     527       
     528        4:
     529                /* Check whether previous mode was user mode */
     530                if_from_kernel 5f
     531       
    512532        /* Load kernel stack pointer from invalid window */
    513533        switch_to_invalid %g5, %g6
    514 
     534       
    515535        /* set uspace window mark */
    516536        mov %g6, %l7
     
    518538        and %l7, 0x7, %l7
    519539        or %l7, 0x10, %l7
    520 
     540       
    521541        /* Save stack pointer */
    522542        mov %l5, %g7
    523543        switch_back %g5, %g6
    524544        mov %g7, %sp
    525 //      mov %sp, %fp
    526 
    527 5:      /* Set up stack frame */
    528         sub %sp, 128, %sp
    529 
    530         /* Save trap data on stack */
    531         mov %psr, %l5
    532         st %l1, [%sp + 92]
    533         st %l2, [%sp + 96]
    534         st %l5, [%sp + 100]
    535         st %g1, [%sp + 104]
    536         st %g2, [%sp + 108]
    537         st %g3, [%sp + 112]
    538         st %g4, [%sp + 116]
    539         st %l0, [%sp + 120]
    540 
    541         /* Enable traps */
    542         mov %psr, %l0
    543         or %l0, (1 << 5), %l0
    544         mov %l0, %psr
    545         nop
    546         nop
    547         nop
    548         nop
    549 
    550         /* Get UWB address */
    551 //      switch_to_invalid %g5, %g6
    552 //      mov %l6, %g1
    553 //      switch_back %g5, %g6
    554 
    555 #       /* Flush windows to stack */
    556         call flush_windows
    557         nop
    558 /*
    559         get_wim_number %g2
    560         get_cwp %g5
    561         mov %psr, %g6
    562 
    563         sub %g2, 1, %g4
    564         and %g4, 0x7, %g4
    565 0:      mov %g0, %wim
    566         cmp %g5, %g4
    567         be 0f
    568         nop
    569 
    570         restore
    571         add %g1, 64, %g1
    572         std %l0, [%g1  + 0]
    573         std %l2, [%g1 +  8]
    574         std %l4, [%g1 + 16]
    575         std %l6, [%g1 + 24]
    576         std %i0, [%g1 + 32]
    577         std %l2, [%g1 + 40]
    578         std %l4, [%g1 + 48]
    579         std %l6, [%g1 + 56]
    580         inc %g5
    581         and %g5, 0x7, %g5
    582         ba 0b
    583         nop
    584 
    585 0:      inc %g4
    586         and %g4, 0x7, %g4
    587         clr %g5
    588         inc %g5
    589         sll %g5, %g4, %g5
    590 
    591         * Write values to invalid window and switch back *
    592         mov %g7, %l5
    593         mov %g1, %l6
    594         clr %l7
    595         switch_back %g5, %g6
    596 */
    597 
    598         /* Jump to actual subroutine */
    599         call %o2
    600         add %sp, 128, %o1
    601 
    602         /* Return from handler */
    603         ld [%sp + 92], %l1
    604         ld [%sp + 96], %l2
    605         ld [%sp + 100], %l0
    606         mov %l0, %psr
    607         nop
    608         nop
    609         nop
    610         nop
    611         nop
    612 
    613         /* If trap originated from uspace, clear uspace window mark and save uwb address for future use */
    614         if_from_kernel 9f
    615         switch_to_invalid %g5, %g6
    616         clr %l7
    617         mov %l5, %g2
    618         mov %l6, %g7
    619         switch_back %g5, %g6
    620         mov %g7, %g1
    621 
    622         /* If trap originated from uspace, restore all windows from UWB */
    623         /* UWB pointer is at %g1 */
    624 0:      mov %g0, %wim
    625         clr %g5
    626         andcc %g1, UWB_ALIGNMENT - 1, %g0
    627         bz 0f
    628         nop
    629 
     545        ##      mov %sp, %fp
     546       
     547        5:
     548                /* Set up stack frame */
     549                sub %sp, 128, %sp
     550               
     551                /* Save trap data on stack */
     552                mov %psr, %l5
     553                st %l1, [%sp + 92]
     554                st %l2, [%sp + 96]
     555                st %l5, [%sp + 100]
     556                st %g1, [%sp + 104]
     557                st %g2, [%sp + 108]
     558                st %g3, [%sp + 112]
     559                st %g4, [%sp + 116]
     560                st %l0, [%sp + 120]
     561               
     562                /* Enable traps */
     563                mov %psr, %l0
     564                or %l0, (1 << 5), %l0
     565                mov %l0, %psr
     566                nop
     567                nop
     568                nop
     569                nop
     570               
     571                /* Get UWB address */
     572                ##      switch_to_invalid %g5, %g6
     573                ##      mov %l6, %g1
     574                ##      switch_back %g5, %g6
     575               
     576                /* Flush windows to stack */
     577                call flush_windows
     578                nop
     579               
     580                /* Jump to actual subroutine */
     581                call %o2
     582                add %sp, 128, %o1
     583               
     584                /* Return from handler */
     585                ld [%sp + 92], %l1
     586                ld [%sp + 96], %l2
     587                ld [%sp + 100], %l0
     588                mov %l0, %psr
     589                nop
     590                nop
     591                nop
     592                nop
     593                nop
     594               
     595                /*
     596                 * If trap originated from user space, clear user space window mark
     597                 * and save uwb address for future use.
     598                 */
     599                if_from_kernel 9f
     600                switch_to_invalid %g5, %g6
     601                clr %l7
     602                mov %l5, %g2
     603                mov %l6, %g7
     604                switch_back %g5, %g6
     605                mov %g7, %g1
     606               
     607                /* If trap originated from user space, restore all windows from UWB */
     608                /* UWB pointer is at %g1 */
     609        0:
     610                mov %g0, %wim
     611                clr %g5
     612                andcc %g1, UWB_ALIGNMENT - 1, %g0
     613                bz 0f
     614                nop
     615       
    630616        restore
    631617        sub %g1, 64, %g1
    632         ldd [%g1 +  0], %l0
    633         ldd [%g1 +  8], %l2
     618        ldd [%g1 + 0], %l0
     619        ldd [%g1 + 8], %l2
    634620        ldd [%g1 + 16], %l4
    635621        ldd [%g1 + 24], %l6
     
    642628        ba 0b
    643629        nop
    644 
    645         /* We've restored all uspace windows. Now time to
    646          * fix CWP and WIM
     630       
     631        /*
     632         * We've restored all uspace windows. Now time to
     633         * fix CWP and WIM.
    647634         */
    648 0:      restore
    649         get_cwp %g7
    650         clr %g5
    651         inc %g5
    652         sll %g5, %g7, %g5
    653 
    654         /* Write values to invalid window and switch back */
    655         mov %g2, %l5
    656         mov %g1, %l6
    657         clr %l7
    658         switch_back %g5, %g6
    659 
    660         mov %sp, %l3
    661         sub %g2, 128, %sp
    662         ld [%sp + 104], %g1
    663         ld [%sp + 108], %g2
    664         ld [%sp + 112], %g3
    665         ld [%sp + 116], %g4
    666         ld [%sp + 120], %g7
    667         mov %l3, %sp
    668         b 10f
    669         nop
    670 
    671 9:      inline_restore_kernel
    672 
    673         ld [%sp + 104], %g1
    674         ld [%sp + 108], %g2
    675         ld [%sp + 112], %g3
    676         ld [%sp + 116], %g4
    677         ld [%sp + 120], %g7
    678 
    679 10:     jmp %l1
    680         rett %l2
     635        0:
     636                restore
     637                get_cwp %g7
     638                clr %g5
     639                inc %g5
     640                sll %g5, %g7, %g5
     641               
     642                /* Write values to invalid window and switch back */
     643                mov %g2, %l5
     644                mov %g1, %l6
     645                clr %l7
     646                switch_back %g5, %g6
     647               
     648                mov %sp, %l3
     649                sub %g2, 128, %sp
     650                ld [%sp + 104], %g1
     651                ld [%sp + 108], %g2
     652                ld [%sp + 112], %g3
     653                ld [%sp + 116], %g4
     654                ld [%sp + 120], %g7
     655                mov %l3, %sp
     656                b 10f
     657                nop
     658       
     659        9:
     660                inline_restore_kernel
     661                ld [%sp + 104], %g1
     662                ld [%sp + 108], %g2
     663                ld [%sp + 112], %g3
     664                ld [%sp + 116], %g4
     665                ld [%sp + 120], %g7
     666       
     667        10:
     668                jmp %l1
     669                rett %l2
    681670
    682671interrupt_trap:
    683672        /* Save %g7 */
    684673        mov %g7, %l0
    685 
     674       
    686675        /* Check whether we landed in invalid window */
    687676        get_wim_number %g6
     
    690679        bne 4f
    691680        nop
    692 
    693         /* We are in invalid window. Check whether previous mode was usermode */
     681       
     682        /* We are in invalid window. Check whether previous mode was user mode */
    694683        if_from_kernel 3f
    695 
    696         /* Trap originated from uspace */
     684       
     685        /* Trap originated from user space */
    697686        /* Kernel stack pointer is at %l5, uwb is at %l6 */
    698687        inline_save_uspace %l6
    699 
    700         /* set uspace window mark */
     688       
     689        /* Set uspace window mark */
    701690        mov %psr, %l7
    702691        inc %l7
     
    705694        b 4f
    706695        nop
    707 
    708 3:      /* Trap originated from kernel */
    709         inline_save_kernel
    710 
    711 4:      /* Check whether previous mode was usermode */
    712         if_from_kernel 5f
    713 
    714         /* Load kernel stack pointer from invalid window */
    715         switch_to_invalid %g5, %g6
    716 
    717         /* set uspace window mark */
    718         mov %g6, %l7
    719         inc %l7
    720         and %l7, 0x7, %l7
    721         or %l7, 0x10, %l7
    722 
    723         /* Save stack pointer */
    724         mov %l5, %g7
    725         switch_back %g5, %g6
    726         mov %g7, %sp
    727 //      mov %sp, %fp
    728 
    729 5:      /* Set up stack frame */
    730         sub %sp, 128, %sp
    731 
    732         /* Save trap data on stack */
    733         mov %psr, %l5
    734         st %l1, [%sp + 92]
    735         st %l2, [%sp + 96]
    736         st %l5, [%sp + 100]
    737         st %g1, [%sp + 104]
    738         st %g2, [%sp + 108]
    739         st %g3, [%sp + 112]
    740         st %g4, [%sp + 116]
    741         st %l0, [%sp + 120]
    742 
    743         /* Enable traps */
    744         mov %psr, %l0
    745         or %l0, (1 << 5), %l0
    746         mov %l0, %psr
    747         nop
    748         nop
    749         nop
    750         nop
    751 
    752         /* Flush windows to stack */
    753         call flush_windows
    754         nop
    755 
    756         /* Jump to actual subroutine */
    757         mov %g2, %o0
    758         call irq_exception
    759         add %sp, 128, %o1
    760 
    761         /* Return from handler */
    762         ld [%sp + 92], %l1
    763         ld [%sp + 96], %l2
    764         ld [%sp + 100], %l0
    765         mov %l0, %psr
    766         nop
    767         nop
    768         nop
    769         nop
    770         nop
    771 
    772         /* If trap originated from uspace, clear uspace window mark and save uwb address for future use */
    773         if_from_kernel 6f
    774         switch_to_invalid %g5, %g6
    775         clr %l7
    776         mov %l5, %g2
    777         mov %l6, %g7
    778         switch_back %g5, %g6
    779         mov %g7, %g1
    780 
    781         /* If trap originated from uspace, restore all windows from UWB */
    782         /* UWB pointer is at %g1 */
    783 0:      mov %g0, %wim
    784         clr %g5
    785         andcc %g1, UWB_ALIGNMENT - 1, %g0
    786         bz 0f
    787         nop
    788 
    789         restore
    790         sub %g1, 64, %g1
    791         ldd [%g1 +  0], %l0
    792         ldd [%g1 +  8], %l2
    793         ldd [%g1 + 16], %l4
    794         ldd [%g1 + 24], %l6
    795         ldd [%g1 + 32], %i0
    796         ldd [%g1 + 40], %i2
    797         ldd [%g1 + 48], %i4
    798         ldd [%g1 + 56], %i6
    799         inc %g5
    800         and %g5, 0x7, %g5
    801         ba 0b
    802         nop
    803 
    804         /* We've restored all uspace windows. Now time to
    805          * fix CWP and WIM
     696       
     697        3:
     698                /* Trap originated from kernel */
     699                inline_save_kernel
     700       
     701        4:
     702                /* Check whether previous mode was user mode */
     703                if_from_kernel 5f
     704               
     705                /* Load kernel stack pointer from invalid window */
     706                switch_to_invalid %g5, %g6
     707               
     708                /* Set user space window mark */
     709                mov %g6, %l7
     710                inc %l7
     711                and %l7, 0x7, %l7
     712                or %l7, 0x10, %l7
     713               
     714                /* Save stack pointer */
     715                mov %l5, %g7
     716                switch_back %g5, %g6
     717                mov %g7, %sp
     718                ##      mov %sp, %fp
     719       
     720        5:
     721                /* Set up stack frame */
     722                sub %sp, 128, %sp
     723               
     724                /* Save trap data on stack */
     725                mov %psr, %l5
     726                st %l1, [%sp + 92]
     727                st %l2, [%sp + 96]
     728                st %l5, [%sp + 100]
     729                st %g1, [%sp + 104]
     730                st %g2, [%sp + 108]
     731                st %g3, [%sp + 112]
     732                st %g4, [%sp + 116]
     733                st %l0, [%sp + 120]
     734               
     735                /* Enable traps */
     736                mov %psr, %l0
     737                or %l0, (1 << 5), %l0
     738                mov %l0, %psr
     739                nop
     740                nop
     741                nop
     742                nop
     743               
     744                /* Flush windows to stack */
     745                call flush_windows
     746                nop
     747               
     748                /* Jump to actual subroutine */
     749                mov %g2, %o0
     750                call irq_exception
     751                add %sp, 128, %o1
     752               
     753                /* Return from handler */
     754                ld [%sp + 92], %l1
     755                ld [%sp + 96], %l2
     756                ld [%sp + 100], %l0
     757                mov %l0, %psr
     758                nop
     759                nop
     760                nop
     761                nop
     762                nop
     763               
     764                /*
     765                 * If trap originated from user space, clear user space window mark
     766                 * and save uwb address for future use.
     767                 */
     768                if_from_kernel 6f
     769                switch_to_invalid %g5, %g6
     770                clr %l7
     771                mov %l5, %g2
     772                mov %l6, %g7
     773                switch_back %g5, %g6
     774                mov %g7, %g1
     775               
     776                /* If trap originated from user space, restore all windows from UWB */
     777                /* UWB pointer is at %g1 */
     778        0:
     779                mov %g0, %wim
     780                clr %g5
     781                andcc %g1, UWB_ALIGNMENT - 1, %g0
     782                bz 0f
     783                nop
     784               
     785                restore
     786                sub %g1, 64, %g1
     787                ldd [%g1 + 0], %l0
     788                ldd [%g1 + 8], %l2
     789                ldd [%g1 + 16], %l4
     790                ldd [%g1 + 24], %l6
     791                ldd [%g1 + 32], %i0
     792                ldd [%g1 + 40], %i2
     793                ldd [%g1 + 48], %i4
     794                ldd [%g1 + 56], %i6
     795                inc %g5
     796                and %g5, 0x7, %g5
     797                ba 0b
     798                nop
     799               
     800        /*
     801         * We've restored all user space windows. Now time to
     802         * fix CWP and WIM.
    806803         */
    807 0:      restore
    808         get_cwp %g7
    809         clr %g5
    810         inc %g5
    811         sll %g5, %g7, %g5
    812 
    813         /* Write values to invalid window and switch back */
    814         mov %g2, %l5
    815         mov %g1, %l6
    816         clr %l7
    817         switch_back %g5, %g6
    818 
    819         /* If next window is invalid, do inline restore */
    820 6:      get_wim_number %g6
    821         get_cwp %g7
    822         inc %g7
    823         and %g7, 0x7, %g7
    824         cmp %g6, %g7
    825         bne 8f
    826 
    827         if_from_kernel 7f
    828 
    829         inline_restore_uspace %g1
    830         switch_to_invalid %g5, %g6
    831         mov %g1, %l6
    832         switch_back %g5, %g6
    833         b 8f
    834         nop
    835 
    836 7:      inline_restore_kernel
    837 
    838 8:      ld [%sp + 104], %g1
    839         ld [%sp + 108], %g2
    840         ld [%sp + 112], %g3
    841         ld [%sp + 116], %g4
    842         ld [%sp + 120], %g7
    843         jmp %l1
    844         rett %l2
    845 
     804        0:
     805                restore
     806                get_cwp %g7
     807                clr %g5
     808                inc %g5
     809                sll %g5, %g7, %g5
     810               
     811                /* Write values to invalid window and switch back */
     812                mov %g2, %l5
     813                mov %g1, %l6
     814                clr %l7
     815                switch_back %g5, %g6
     816               
     817                /* If next window is invalid, do inline restore */
     818        6:
     819                get_wim_number %g6
     820                get_cwp %g7
     821                inc %g7
     822                and %g7, 0x7, %g7
     823                cmp %g6, %g7
     824                bne 8f
     825               
     826                if_from_kernel 7f
     827               
     828                inline_restore_uspace %g1
     829                switch_to_invalid %g5, %g6
     830                mov %g1, %l6
     831                switch_back %g5, %g6
     832                b 8f
     833                nop
     834       
     835        7:
     836                inline_restore_kernel
     837       
     838        8:
     839                ld [%sp + 104], %g1
     840                ld [%sp + 108], %g2
     841                ld [%sp + 112], %g3
     842                ld [%sp + 116], %g4
     843                ld [%sp + 120], %g7
     844                jmp %l1
     845                rett %l2
    846846
    847847syscall_trap:
    848848        /* Save %g7 */
    849849        mov %g7, %l0
    850 
     850       
    851851        /* Check whether we landed in invalid window */
    852852        get_wim_number %g6
     
    855855        bne 4f
    856856        nop
    857 
    858         /* We are in invalid window. Check whether previous mode was usermode */
     857       
     858        /* We are in invalid window. Check whether previous mode was user mode */
    859859        if_from_kernel 3f
    860 
    861         /* Trap originated from uspace */
     860       
     861        /* Trap originated from user space */
    862862        /* Kernel stack pointer is at %l5, uwb is at %l6 */
    863863        inline_save_uspace %l6
    864 
    865         /* set uspace window mark */
     864       
     865        /* Set user space window mark */
    866866        mov %psr, %l7
    867867        inc %l7
     
    870870        b 4f
    871871        nop
    872 
    873 3:      /* Trap originated from kernel */
    874         inline_save_kernel
    875 
    876 4:      /* Check whether previous mode was usermode */
    877         if_from_kernel 5f
    878 
    879         /* Load kernel stack pointer from invalid window */
    880         switch_to_invalid %g5, %g6
    881 
    882         /* set uspace window mark */
    883         mov %g6, %l7
    884         inc %l7
    885         and %l7, 0x7, %l7
    886         or %l7, 0x10, %l7
    887 
    888         /* Save stack pointer */
    889         mov %l5, %g7
    890         switch_back %g5, %g6
    891         mov %g7, %sp
    892 //      mov %sp, %fp
    893 
    894 5:      /* Set up stack frame */
    895         sub %sp, 128, %sp
    896 
    897         /* Save trap data on stack */
    898         mov %psr, %l5
    899         st %l1, [%sp + 92]
    900         st %l2, [%sp + 96]
    901         st %l5, [%sp + 100]
    902         st %g1, [%sp + 104]
    903         st %g2, [%sp + 108]
    904         st %g3, [%sp + 112]
    905         st %g4, [%sp + 116]
    906         st %l0, [%sp + 120]
    907 
    908         /* Enable traps */
    909         mov %psr, %l0
    910         or %l0, (1 << 5), %l0
    911         mov %l0, %psr
    912         nop
    913         nop
    914         nop
    915         nop
    916 
    917         /* Flush windows */
    918         call flush_windows
    919         nop
    920 
    921         /* Jump to actual subroutine */
    922         sub %o0, 0x80, %o0
    923         st %o0, [ %sp + 92 ]
    924         mov %i0, %o0
    925         mov %i1, %o1
    926         mov %i2, %o2
    927         mov %i3, %o3
    928         mov %i4, %o4
    929         call syscall
    930         mov %i5, %o5
    931 
    932         /* Return from handler */
    933         ld [%sp + 92], %l1
    934         ld [%sp + 96], %l2
    935         ld [%sp + 100], %l0
    936         mov %o0, %i0
    937         mov %psr, %l1
    938         and %l1, 0xf, %l1
    939         and %l0, 0xfffffff0, %l0
    940         or %l0, %l1, %l0
    941         mov %l0, %psr
    942         nop
    943         nop
    944         nop
    945         nop
    946         nop
    947 
    948         /* If trap originated from uspace, clear uspace window mark and save uwb address for future use */
    949         if_from_kernel 8f
    950         switch_to_invalid %g5, %g6
    951         mov %l5, %g2
    952         mov %l6, %g1
    953         mov %l7, %g7
    954         switch_back %g5, %g6
    955        
    956         /* If trap originated from uspace, restore all windows from UWB */
    957         /* UWB pointer is at %g1 */
    958 0:      mov %g0, %wim
    959         clr %g5
    960         andcc %g1, UWB_ALIGNMENT - 1, %g0
    961         bz 0f
    962         nop
    963 
    964         restore
    965         sub %g1, 64, %g1
    966         ldd [%g1 +  0], %l0
    967         ldd [%g1 +  8], %l2
    968         ldd [%g1 + 16], %l4
    969         ldd [%g1 + 24], %l6
    970         ldd [%g1 + 32], %i0
    971         ldd [%g1 + 40], %i2
    972         ldd [%g1 + 48], %i4
    973         ldd [%g1 + 56], %i6
    974         inc %g5
    975         and %g5, 0x7, %g5
    976         ba 0b
    977         nop
    978 
    979         /* We've restored all uspace windows. Now time to
    980          * fix CWP and WIM
    981          */
    982 0:      restore
    983         get_cwp %g7
    984         clr %g5
    985         inc %g5
    986         sll %g5, %g7, %g5
    987 
    988         /* Write values to invalid window and switch back */
    989         mov %g2, %l5
    990         mov %g1, %l6
    991         clr %l7
    992         switch_back %g5, %g6
    993 
    994 8:      mov %sp, %l1
    995         sub %g2, 128, %sp
    996         ld [%sp + 104], %g1
    997         ld [%sp + 108], %g2
    998         ld [%sp + 112], %g3
    999         ld [%sp + 116], %g4
    1000         ld [%sp + 120], %g7
    1001         mov %l1, %sp
    1002         jmp %l2
    1003         rett %l2 + 4
    1004 
    1005 #define STRAP(_vector, _handler) \
     872       
     873        3:
     874                /* Trap originated from kernel */
     875                inline_save_kernel
     876       
     877        4:
     878                /* Check whether previous mode was user mode */
     879                if_from_kernel 5f
     880               
     881                /* Load kernel stack pointer from invalid window */
     882                switch_to_invalid %g5, %g6
     883               
     884                /* Set user space window mark */
     885                mov %g6, %l7
     886                inc %l7
     887                and %l7, 0x7, %l7
     888                or %l7, 0x10, %l7
     889               
     890                /* Save stack pointer */
     891                mov %l5, %g7
     892                switch_back %g5, %g6
     893                mov %g7, %sp
     894                ##      mov %sp, %fp
     895               
     896        5:
     897                /* Set up stack frame */
     898                sub %sp, 128, %sp
     899               
     900                /* Save trap data on stack */
     901                mov %psr, %l5
     902                st %l1, [%sp + 92]
     903                st %l2, [%sp + 96]
     904                st %l5, [%sp + 100]
     905                st %g1, [%sp + 104]
     906                st %g2, [%sp + 108]
     907                st %g3, [%sp + 112]
     908                st %g4, [%sp + 116]
     909                st %l0, [%sp + 120]
     910               
     911                /* Enable traps */
     912                mov %psr, %l0
     913                or %l0, (1 << 5), %l0
     914                mov %l0, %psr
     915                nop
     916                nop
     917                nop
     918                nop
     919               
     920                /* Flush windows */
     921                call flush_windows
     922                nop
     923               
     924                /* Jump to actual subroutine */
     925                sub %o0, 0x80, %o0
     926                st %o0, [%sp + 92]
     927                mov %i0, %o0
     928                mov %i1, %o1
     929                mov %i2, %o2
     930                mov %i3, %o3
     931                mov %i4, %o4
     932                call syscall
     933                mov %i5, %o5
     934               
     935                /* Return from handler */
     936                ld [%sp + 92], %l1
     937                ld [%sp + 96], %l2
     938                ld [%sp + 100], %l0
     939                mov %o0, %i0
     940                mov %psr, %l1
     941                and %l1, 0xf, %l1
     942                and %l0, 0xfffffff0, %l0
     943                or %l0, %l1, %l0
     944                mov %l0, %psr
     945                nop
     946                nop
     947                nop
     948                nop
     949                nop
     950               
     951                /*
     952                 * If trap originated from user space, clear user space window mark
     953                 * and save uwb address for future use.
     954                 */
     955                if_from_kernel 8f
     956                switch_to_invalid %g5, %g6
     957                mov %l5, %g2
     958                mov %l6, %g1
     959                mov %l7, %g7
     960                switch_back %g5, %g6
     961               
     962                /* If trap originated from user space, restore all windows from UWB */
     963                /* UWB pointer is at %g1 */
     964        0:
     965                mov %g0, %wim
     966                clr %g5
     967                andcc %g1, UWB_ALIGNMENT - 1, %g0
     968                bz 0f
     969                nop
     970               
     971                restore
     972                sub %g1, 64, %g1
     973                ldd [%g1 + 0], %l0
     974                ldd [%g1 + 8], %l2
     975                ldd [%g1 + 16], %l4
     976                ldd [%g1 + 24], %l6
     977                ldd [%g1 + 32], %i0
     978                ldd [%g1 + 40], %i2
     979                ldd [%g1 + 48], %i4
     980                ldd [%g1 + 56], %i6
     981                inc %g5
     982                and %g5, 0x7, %g5
     983                ba 0b
     984                nop
     985               
     986                /*
     987                 * We've restored all user space windows. Now time to
     988                 * fix CWP and WIM.
     989                 */
     990        0:
     991                restore
     992                get_cwp %g7
     993                clr %g5
     994                inc %g5
     995                sll %g5, %g7, %g5
     996               
     997                /* Write values to invalid window and switch back */
     998                mov %g2, %l5
     999                mov %g1, %l6
     1000                clr %l7
     1001                switch_back %g5, %g6
     1002       
     1003        8:
     1004                mov %sp, %l1
     1005                sub %g2, 128, %sp
     1006                ld [%sp + 104], %g1
     1007                ld [%sp + 108], %g2
     1008                ld [%sp + 112], %g3
     1009                ld [%sp + 116], %g4
     1010                ld [%sp + 120], %g7
     1011                mov %l1, %sp
     1012                jmp %l2
     1013                rett %l2 + 4
     1014
     1015#define STRAP(_vector, _handler) \
    10061016        .org trap_table + _vector * TRAP_ENTRY_SIZE; \
    10071017        mov %psr, %l0 ; \
     
    10101020        nop
    10111021
    1012 #define TRAP(_vector, _handler) \
     1022#define TRAP(_vector, _handler) \
    10131023        .org trap_table + _vector * TRAP_ENTRY_SIZE; \
    10141024        set _vector, %o0 ; \
     
    10171027        or %o2, %lo(_handler), %o2 ;
    10181028
    1019 #define SYSCALL(_vector) \
     1029#define SYSCALL(_vector) \
    10201030        .org trap_table + _vector * TRAP_ENTRY_SIZE; \
    10211031        set _vector, %o0 ; \
     
    10231033        nop ;
    10241034
    1025 #define INTERRUPT(_vector, _priority) \
     1035#define INTERRUPT(_vector, _priority) \
    10261036        .org trap_table + _vector * TRAP_ENTRY_SIZE; \
    10271037        mov %psr, %l0 ; \
     
    10301040        nop ;
    10311041
    1032 #define BADTRAP(_vector) \
     1042#define BADTRAP(_vector) \
    10331043        .org trap_table + _vector * TRAP_ENTRY_SIZE ; \
    10341044        ta 0 ;
     
    10541064        BADTRAP(0x10)
    10551065        INTERRUPT(0x11, 1)
    1056         INTERRUPT(0x12, 2)
    1057         INTERRUPT(0x13, 3)
    1058         INTERRUPT(0x14, 4)
    1059         INTERRUPT(0x15, 5)
    1060         INTERRUPT(0x16, 6)
    1061         INTERRUPT(0x17, 7)
    1062         INTERRUPT(0x18, 8)
    1063         INTERRUPT(0x19, 9)
     1066        INTERRUPT(0x12, 2)
     1067        INTERRUPT(0x13, 3)
     1068        INTERRUPT(0x14, 4)
     1069        INTERRUPT(0x15, 5)
     1070        INTERRUPT(0x16, 6)
     1071        INTERRUPT(0x17, 7)
     1072        INTERRUPT(0x18, 8)
     1073        INTERRUPT(0x19, 9)
    10641074        INTERRUPT(0x1a, 10)
    10651075        INTERRUPT(0x1b, 11)
     
    10681078        INTERRUPT(0x1e, 14)
    10691079        INTERRUPT(0x1f, 15)
    1070         TRAP(0x21, instruction_access_error)
    1071         BADTRAP(0x22)
    1072         BADTRAP(0x23)
    1073         BADTRAP(0x24)
    1074         BADTRAP(0x25)
    1075         BADTRAP(0x26)
    1076         BADTRAP(0x27)
    1077         BADTRAP(0x28)
    1078         TRAP(0x29, data_access_error)
     1080        TRAP(0x21, instruction_access_error)
     1081        BADTRAP(0x22)
     1082        BADTRAP(0x23)
     1083        BADTRAP(0x24)
     1084        BADTRAP(0x25)
     1085        BADTRAP(0x26)
     1086        BADTRAP(0x27)
     1087        BADTRAP(0x28)
     1088        TRAP(0x29, data_access_error)
    10791089        TRAP(0x2a, division_by_zero)
    10801090        TRAP(0x2b, data_store_error)
     
    12111221        SYSCALL(0xae)
    12121222        SYSCALL(0xaf)
    1213         SYSCALL(0xb0)
    1214         SYSCALL(0xb1)
    1215         SYSCALL(0xb2)
    1216         SYSCALL(0xb3)
    1217         SYSCALL(0xb4)
    1218         SYSCALL(0xb5)
    1219         SYSCALL(0xb6)
    1220         SYSCALL(0xb7)
    1221         SYSCALL(0xb8)
    1222         SYSCALL(0xb9)
    1223         SYSCALL(0xba)
    1224         SYSCALL(0xbb)
    1225         SYSCALL(0xbc)
    1226         SYSCALL(0xbd)
    1227         SYSCALL(0xbe)
    1228         SYSCALL(0xbf)
    1229         SYSCALL(0xc0)
    1230         SYSCALL(0xc1)
    1231         SYSCALL(0xc2)
    1232         SYSCALL(0xc3)
    1233         SYSCALL(0xc4)
    1234         SYSCALL(0xc5)
    1235         SYSCALL(0xc6)
    1236         SYSCALL(0xc7)
    1237         SYSCALL(0xc8)
    1238         SYSCALL(0xc9)
    1239         SYSCALL(0xca)
    1240         SYSCALL(0xcb)
    1241         SYSCALL(0xcc)
    1242         SYSCALL(0xcd)
    1243         SYSCALL(0xce)
    1244         SYSCALL(0xcf)
     1223        SYSCALL(0xb0)
     1224        SYSCALL(0xb1)
     1225        SYSCALL(0xb2)
     1226        SYSCALL(0xb3)
     1227        SYSCALL(0xb4)
     1228        SYSCALL(0xb5)
     1229        SYSCALL(0xb6)
     1230        SYSCALL(0xb7)
     1231        SYSCALL(0xb8)
     1232        SYSCALL(0xb9)
     1233        SYSCALL(0xba)
     1234        SYSCALL(0xbb)
     1235        SYSCALL(0xbc)
     1236        SYSCALL(0xbd)
     1237        SYSCALL(0xbe)
     1238        SYSCALL(0xbf)
     1239        SYSCALL(0xc0)
     1240        SYSCALL(0xc1)
     1241        SYSCALL(0xc2)
     1242        SYSCALL(0xc3)
     1243        SYSCALL(0xc4)
     1244        SYSCALL(0xc5)
     1245        SYSCALL(0xc6)
     1246        SYSCALL(0xc7)
     1247        SYSCALL(0xc8)
     1248        SYSCALL(0xc9)
     1249        SYSCALL(0xca)
     1250        SYSCALL(0xcb)
     1251        SYSCALL(0xcc)
     1252        SYSCALL(0xcd)
     1253        SYSCALL(0xce)
     1254        SYSCALL(0xcf)
Note: See TracChangeset for help on using the changeset viewer.