Changeset 60f6b7c in mainline


Ignore:
Timestamp:
2005-09-01T17:47:55Z (19 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5a2e9bbb
Parents:
38207b9
Message:

Register dump on IA-64 exceptions

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/include/asm.h

    r38207b9 r60f6b7c  
    5353void asm_delay_loop(__u32 t);
    5454
     55
     56#define set_shadow_register(reg,val) {__u64 v = val; __asm__  volatile("mov r15 = %0;;\n""bsw.0;;\n""mov "   #reg   " = r15;;\n""bsw.1;;\n" : : "r" (v) : "r15" ); }
     57#define get_shadow_register(reg,val) {__u64 v ; __asm__  volatile("bsw.0;;\n" "mov r15 = r" #reg ";;\n" "bsw.1;;\n" "mov %0 = r15;;\n" : "=r" (v) : : "r15" ); val=v; }
     58
     59#define get_control_register(reg,val) {__u64 v ; __asm__  volatile("mov r15 = cr" #reg ";;\n" "mov %0 = r15;;\n" : "=r" (v) : : "r15" ); val=v; }
     60#define get_aplication_register(reg,val) {__u64 v ; __asm__  volatile("mov r15 = ar" #reg ";;\n" "mov %0 = r15;;\n" : "=r" (v) : : "r15" ); val=v; }
     61#define get_psr(val) {__u64 v ; __asm__  volatile("mov r15 = psr;;\n" "mov %0 = r15;;\n" : "=r" (v) : : "r15" ); val=v; }
     62
     63
    5564#endif
  • arch/ia64/src/cpu/cpu.c

    r38207b9 r60f6b7c  
    22#include <print.h>
    33#include <panic.h>
     4#include <arch/types.h>
    45
    56extern int IVT;
     
    1415
    1516    int *p=&IVT;
     17   
     18    volatile __u64 hlp,hlp2;
    1619
    1720
    18         __asm__ (
     21    int psr = 0x2000;
     22
     23        __asm__  volatile (
    1924                "mov r15 = %0;;"
    2025                "mov cr2 = r15;;"
     26                "mov psr.l = %1;;"
    2127                :
    22                 : "r" (p)
     28                : "r" (p), "r" (psr)
    2329                : "r15"
    2430        );
     31
     32
     33
     34        /*Switch register bank of regs r16 .. r31 to 1 It is automaticly cleared on exception*/
     35        __asm__ volatile ("bsw.1;;");             
     36       
    2537
    2638}
  • arch/ia64/src/interrupt_handler.c

    r38207b9 r60f6b7c  
    3030
    3131#include <panic.h>
     32#include <print.h>
    3233#include <arch/types.h>
     34#include <arch/asm.h>
     35
     36extern __u64 REG_DUMP;
    3337
    3438
     
    4852
    4953
     54#define cr_dump(r) {__u64 val; get_control_register(r,val); printf("cr"#r":%Q\n",val);}
     55#define ar_dump(r) {__u64 val; get_aplication_register(r,val); printf("ar"#r":%Q\n",val);}
     56
    5057void universal_handler(void);
    5158void universal_handler(void)
    5259{
    53         __u64 i;
     60        __u64 vector,psr;
     61        __u64 *p;
     62        int i;
     63       
     64       
     65        get_shadow_register(16,vector);
    5466
    55         __asm__ (
    56                 "mov  %0 = r12;;"
    57                 : "=r" (i)
    58                 :
    59                 : "r15"
    60         );
     67       
     68        p=&REG_DUMP;
    6169
    62         panic("\nException:%Q\n",i);
     70        for(i=0;i<128;i+=2) printf("gr%d:%Q\tgr%d:%Q\n",i,p[i],i+1,p[i+1]);
     71
     72
     73        cr_dump(0);     
     74        cr_dump(1);     
     75        cr_dump(2);     
     76        cr_dump(8);     
     77        cr_dump(16);   
     78        cr_dump(17);   
     79        cr_dump(19);   
     80        cr_dump(20);   
     81        cr_dump(21);   
     82        cr_dump(22);   
     83        cr_dump(23);   
     84        cr_dump(24);   
     85        cr_dump(25);   
     86        cr_dump(64);   
     87        cr_dump(65);   
     88        cr_dump(66);   
     89        cr_dump(67);   
     90        cr_dump(68);   
     91        cr_dump(69);   
     92        cr_dump(70);   
     93        cr_dump(71);   
     94        cr_dump(72);   
     95        cr_dump(73);   
     96        cr_dump(74);   
     97        cr_dump(80);   
     98        cr_dump(81);   
     99       
     100        ar_dump(0);     
     101        ar_dump(1);     
     102        ar_dump(2);     
     103        ar_dump(3);     
     104        ar_dump(4);     
     105        ar_dump(5);     
     106        ar_dump(6);     
     107        ar_dump(7);     
     108        ar_dump(16);   
     109        ar_dump(17);   
     110        ar_dump(18);   
     111        ar_dump(19);   
     112        ar_dump(21);   
     113        ar_dump(24);   
     114        ar_dump(25);   
     115        ar_dump(26);   
     116        ar_dump(27);   
     117        ar_dump(28);   
     118        ar_dump(29);   
     119        ar_dump(30);   
     120        ar_dump(32);   
     121        ar_dump(36);   
     122        ar_dump(40);   
     123        ar_dump(44);   
     124        ar_dump(64);   
     125        ar_dump(65);   
     126        ar_dump(66);   
     127
     128        get_psr(psr);
     129
     130        printf("\nPSR:%Q\n",psr);
     131       
     132        panic("\nException:%Q\n",vector);
    63133}
    64134
  • arch/ia64/src/ivt.S

    r38207b9 r60f6b7c  
    2929
    3030
     31
     32dump_gregs:
     33mov r16 = REG_DUMP;;
     34st8 [r16] = r0;;
     35add r16 = 8,r16 ;;
     36st8 [r16] = r1;;
     37add r16 = 8,r16 ;;
     38st8 [r16] = r2;;
     39add r16 = 8,r16 ;;
     40st8 [r16] = r3;;
     41add r16 = 8,r16 ;;
     42st8 [r16] = r4;;
     43add r16 = 8,r16 ;;
     44st8 [r16] = r5;;
     45add r16 = 8,r16 ;;
     46st8 [r16] = r6;;
     47add r16 = 8,r16 ;;
     48st8 [r16] = r7;;
     49add r16 = 8,r16 ;;
     50st8 [r16] = r8;;
     51add r16 = 8,r16 ;;
     52st8 [r16] = r9;;
     53add r16 = 8,r16 ;;
     54st8 [r16] = r10;;
     55add r16 = 8,r16 ;;
     56st8 [r16] = r11;;
     57add r16 = 8,r16 ;;
     58st8 [r16] = r12;;
     59add r16 = 8,r16 ;;
     60st8 [r16] = r13;;
     61add r16 = 8,r16 ;;
     62st8 [r16] = r14;;
     63add r16 = 8,r16 ;;
     64st8 [r16] = r15;;
     65add r16 = 8,r16 ;;
     66
     67bsw.1;;
     68mov r15 = r16;;
     69bsw.0;;
     70st8 [r16] = r15;;
     71add r16 = 8,r16 ;;
     72bsw.1;;
     73mov r15 = r17;;
     74bsw.0;;
     75st8 [r16] = r15;;
     76add r16 = 8,r16 ;;
     77bsw.1;;
     78mov r15 = r18;;
     79bsw.0;;
     80st8 [r16] = r15;;
     81add r16 = 8,r16 ;;
     82bsw.1;;
     83mov r15 = r19;;
     84bsw.0;;
     85st8 [r16] = r15;;
     86add r16 = 8,r16 ;;
     87bsw.1;;
     88mov r15 = r20;;
     89bsw.0;;
     90st8 [r16] = r15;;
     91add r16 = 8,r16 ;;
     92bsw.1;;
     93mov r15 = r21;;
     94bsw.0;;
     95st8 [r16] = r15;;
     96add r16 = 8,r16 ;;
     97bsw.1;;
     98mov r15 = r22;;
     99bsw.0;;
     100st8 [r16] = r15;;
     101add r16 = 8,r16 ;;
     102bsw.1;;
     103mov r15 = r23;;
     104bsw.0;;
     105st8 [r16] = r15;;
     106add r16 = 8,r16 ;;
     107bsw.1;;
     108mov r15 = r24;;
     109bsw.0;;
     110st8 [r16] = r15;;
     111add r16 = 8,r16 ;;
     112bsw.1;;
     113mov r15 = r25;;
     114bsw.0;;
     115st8 [r16] = r15;;
     116add r16 = 8,r16 ;;
     117bsw.1;;
     118mov r15 = r26;;
     119bsw.0;;
     120st8 [r16] = r15;;
     121add r16 = 8,r16 ;;
     122bsw.1;;
     123mov r15 = r27;;
     124bsw.0;;
     125st8 [r16] = r15;;
     126add r16 = 8,r16 ;;
     127bsw.1;;
     128mov r15 = r28;;
     129bsw.0;;
     130st8 [r16] = r15;;
     131add r16 = 8,r16 ;;
     132bsw.1;;
     133mov r15 = r29;;
     134bsw.0;;
     135st8 [r16] = r15;;
     136add r16 = 8,r16 ;;
     137bsw.1;;
     138mov r15 = r30;;
     139bsw.0;;
     140st8 [r16] = r15;;
     141add r16 = 8,r16 ;;
     142bsw.1;;
     143mov r15 = r31;;
     144bsw.0;;
     145st8 [r16] = r15;;
     146add r16 = 8,r16 ;;
     147
     148
     149st8 [r16] = r32;;
     150add r16 = 8,r16 ;;
     151st8 [r16] = r33;;
     152add r16 = 8,r16 ;;
     153st8 [r16] = r34;;
     154add r16 = 8,r16 ;;
     155st8 [r16] = r35;;
     156add r16 = 8,r16 ;;
     157st8 [r16] = r36;;
     158add r16 = 8,r16 ;;
     159st8 [r16] = r37;;
     160add r16 = 8,r16 ;;
     161st8 [r16] = r38;;
     162add r16 = 8,r16 ;;
     163st8 [r16] = r39;;
     164add r16 = 8,r16 ;;
     165st8 [r16] = r40;;
     166add r16 = 8,r16 ;;
     167st8 [r16] = r41;;
     168add r16 = 8,r16 ;;
     169st8 [r16] = r42;;
     170add r16 = 8,r16 ;;
     171st8 [r16] = r43;;
     172add r16 = 8,r16 ;;
     173st8 [r16] = r44;;
     174add r16 = 8,r16 ;;
     175st8 [r16] = r45;;
     176add r16 = 8,r16 ;;
     177st8 [r16] = r46;;
     178add r16 = 8,r16 ;;
     179st8 [r16] = r47;;
     180add r16 = 8,r16 ;;
     181st8 [r16] = r48;;
     182add r16 = 8,r16 ;;
     183st8 [r16] = r49;;
     184add r16 = 8,r16 ;;
     185st8 [r16] = r50;;
     186add r16 = 8,r16 ;;
     187st8 [r16] = r51;;
     188add r16 = 8,r16 ;;
     189st8 [r16] = r52;;
     190add r16 = 8,r16 ;;
     191st8 [r16] = r53;;
     192add r16 = 8,r16 ;;
     193st8 [r16] = r54;;
     194add r16 = 8,r16 ;;
     195st8 [r16] = r55;;
     196add r16 = 8,r16 ;;
     197st8 [r16] = r56;;
     198add r16 = 8,r16 ;;
     199st8 [r16] = r57;;
     200add r16 = 8,r16 ;;
     201st8 [r16] = r58;;
     202add r16 = 8,r16 ;;
     203st8 [r16] = r59;;
     204add r16 = 8,r16 ;;
     205st8 [r16] = r60;;
     206add r16 = 8,r16 ;;
     207st8 [r16] = r61;;
     208add r16 = 8,r16 ;;
     209st8 [r16] = r62;;
     210add r16 = 8,r16 ;;
     211st8 [r16] = r63;;
     212add r16 = 8,r16 ;;
     213
     214
     215
     216st8 [r16] = r64;;
     217add r16 = 8,r16 ;;
     218st8 [r16] = r65;;
     219add r16 = 8,r16 ;;
     220st8 [r16] = r66;;
     221add r16 = 8,r16 ;;
     222st8 [r16] = r67;;
     223add r16 = 8,r16 ;;
     224st8 [r16] = r68;;
     225add r16 = 8,r16 ;;
     226st8 [r16] = r69;;
     227add r16 = 8,r16 ;;
     228st8 [r16] = r70;;
     229add r16 = 8,r16 ;;
     230st8 [r16] = r71;;
     231add r16 = 8,r16 ;;
     232st8 [r16] = r72;;
     233add r16 = 8,r16 ;;
     234st8 [r16] = r73;;
     235add r16 = 8,r16 ;;
     236st8 [r16] = r74;;
     237add r16 = 8,r16 ;;
     238st8 [r16] = r75;;
     239add r16 = 8,r16 ;;
     240st8 [r16] = r76;;
     241add r16 = 8,r16 ;;
     242st8 [r16] = r77;;
     243add r16 = 8,r16 ;;
     244st8 [r16] = r78;;
     245add r16 = 8,r16 ;;
     246st8 [r16] = r79;;
     247add r16 = 8,r16 ;;
     248st8 [r16] = r80;;
     249add r16 = 8,r16 ;;
     250st8 [r16] = r81;;
     251add r16 = 8,r16 ;;
     252st8 [r16] = r82;;
     253add r16 = 8,r16 ;;
     254st8 [r16] = r83;;
     255add r16 = 8,r16 ;;
     256st8 [r16] = r84;;
     257add r16 = 8,r16 ;;
     258st8 [r16] = r85;;
     259add r16 = 8,r16 ;;
     260st8 [r16] = r86;;
     261add r16 = 8,r16 ;;
     262st8 [r16] = r87;;
     263add r16 = 8,r16 ;;
     264st8 [r16] = r88;;
     265add r16 = 8,r16 ;;
     266st8 [r16] = r89;;
     267add r16 = 8,r16 ;;
     268st8 [r16] = r90;;
     269add r16 = 8,r16 ;;
     270st8 [r16] = r91;;
     271add r16 = 8,r16 ;;
     272st8 [r16] = r92;;
     273add r16 = 8,r16 ;;
     274st8 [r16] = r93;;
     275add r16 = 8,r16 ;;
     276st8 [r16] = r94;;
     277add r16 = 8,r16 ;;
     278st8 [r16] = r95;;
     279add r16 = 8,r16 ;;
     280
     281
     282
     283st8 [r16] = r96;;
     284add r16 = 8,r16 ;;
     285st8 [r16] = r97;;
     286add r16 = 8,r16 ;;
     287st8 [r16] = r98;;
     288add r16 = 8,r16 ;;
     289st8 [r16] = r99;;
     290add r16 = 8,r16 ;;
     291st8 [r16] = r100;;
     292add r16 = 8,r16 ;;
     293st8 [r16] = r101;;
     294add r16 = 8,r16 ;;
     295st8 [r16] = r102;;
     296add r16 = 8,r16 ;;
     297st8 [r16] = r103;;
     298add r16 = 8,r16 ;;
     299st8 [r16] = r104;;
     300add r16 = 8,r16 ;;
     301st8 [r16] = r105;;
     302add r16 = 8,r16 ;;
     303st8 [r16] = r106;;
     304add r16 = 8,r16 ;;
     305st8 [r16] = r107;;
     306add r16 = 8,r16 ;;
     307st8 [r16] = r108;;
     308add r16 = 8,r16 ;;
     309st8 [r16] = r109;;
     310add r16 = 8,r16 ;;
     311st8 [r16] = r110;;
     312add r16 = 8,r16 ;;
     313st8 [r16] = r111;;
     314add r16 = 8,r16 ;;
     315st8 [r16] = r112;;
     316add r16 = 8,r16 ;;
     317st8 [r16] = r113;;
     318add r16 = 8,r16 ;;
     319st8 [r16] = r114;;
     320add r16 = 8,r16 ;;
     321st8 [r16] = r115;;
     322add r16 = 8,r16 ;;
     323st8 [r16] = r116;;
     324add r16 = 8,r16 ;;
     325st8 [r16] = r117;;
     326add r16 = 8,r16 ;;
     327st8 [r16] = r118;;
     328add r16 = 8,r16 ;;
     329st8 [r16] = r119;;
     330add r16 = 8,r16 ;;
     331st8 [r16] = r120;;
     332add r16 = 8,r16 ;;
     333st8 [r16] = r121;;
     334add r16 = 8,r16 ;;
     335st8 [r16] = r122;;
     336add r16 = 8,r16 ;;
     337st8 [r16] = r123;;
     338add r16 = 8,r16 ;;
     339st8 [r16] = r124;;
     340add r16 = 8,r16 ;;
     341st8 [r16] = r125;;
     342add r16 = 8,r16 ;;
     343st8 [r16] = r126;;
     344add r16 = 8,r16 ;;
     345st8 [r16] = r127;;
     346add r16 = 8,r16 ;;
     347
     348
     349
     350br.ret.sptk.many b0;;
     351
     352
     353
     354
     355
    31356.macro Handler o h
    32357.org IVT + \o
     
    36361.macro Handler2 o
    37362.org IVT + \o
    38 mov r12 = \o
     363br.call.sptk.many b0 = dump_gregs;;
     364mov r16 = \o ;;
     365bsw.1;;
    39366br universal_handler;;
    40367.endm
     
    72399Handler2 0x5200
    73400Handler2 0x5300
    74 Handler 0x5400 general_exception
     401#Handler 0x5400 general_exception
     402Handler2 0x5400
    75403Handler2 0x5500
    76404Handler2 0x5600
     
    127455
    128456.align 32768
    129 .byte 0
     457.global REG_DUMP
     458
     459REG_DUMP:
     460.space 128*8
     461
  • src/main/main.c

    r38207b9 r60f6b7c  
    133133void main_bsp_separated_stack(void)
    134134{
    135 
    136         int a;
    137135        vm_t *m;
    138136        task_t *k;
Note: See TracChangeset for help on using the changeset viewer.