1# MIPS/IRIX  ISA/ABI
2# Used to configure dwarfdump printing of .debug_frame and
3# .eh_frame.
4
5# Any number of abi's can be described. Only one can be selected
6# in a given dwarfdump run (see dwarfdump options)
7#  Available commands are
8# beginabi:  <abiname>
9# reg: <regname> <dwarf regnumber>
10# frame_interface: <integer value 2 or 3>
11# cfa_reg:  <number>
12# initial_reg_value:  <number: often 1034 or 1035 >
13# same_val_reg: 1035
14# undefined_val_reg: 1034
15# reg_table_size: <size of table>
16# address_size: <4 or 8, Rarely needed, see example below. >
17# includeabi: <abiname  Inserts the referenced abi as if its text was
18#            directly inserted at this point.>
19# endabi:  <abiname>
20#
21# Symbolic names do not work here, use literal numbers
22# where applicable (in C standard decimal, octal (leading 0) or
23# hexadecimal <leading 0x>).
24#
25# Whitespace is required to separate command: from operands and
26# operands from each other on a line.
27#
28# There is no ordering required within a beginabi/endabi pair.
29# As many ABIs as required may be listed.
30# dwarfdump will choose exactly one abi to dump frame information.
31#
32
33
34# MIPS abi,the old IRIX form, not to be used on modern objects.
35# Begin with abi name (use here and on dwarfdump command line).
36beginabi: mips-irix
37
38# Instructs dwarfdump to default to the older frame interface.
39# Use value 3 to use the newer interface.
40# The '2' interface is supported but deprecated (deprecated
41# because it cannot work with all popular ABIs: mixing
42# the cfa-rule into the table column set was not a good idea
43# but it is part of the MIPS/IRIX standard usage).
44frame_interface: 2
45
46# If (and only if) using  frame_interface: 2 tell dwarfdump
47# what table colum that DW_FRAME_CFA_COL is.
48# If using frame_interface: 3 cfa_reg: should be
49#  DW_FRAME_CFA_COL3 (1436)
50cfa_reg: 0
51
52# For MIPS, the same as DW_FRAME_SAME_VAL (1035).
53# For other ISA/ABIs 1034 (DW_FRAME_UNDEFINED_VAL) might be better.
54# Depends on the ABI convention, if set wrong way too many
55# regs will be listed in the frame output.
56# This instructs  dwarfdump  to set libdwarf to this value,
57# overriding the libdwarf default.
58# If initial_reg_value not set the libdwarf default is used
59# (see libdwarf.h DW_FRAME_REG_INITIAL_VALUE).
60initial_reg_value:  1035  # DW_FRAME_SAME_VAL
61same_val_reg: 1035
62undefined_val_reg: 1034
63
64# Built in to frame_interface: 2 as 66.
65reg_table_size: 66
66
67
68# Only name registers for wich a r4 (for example) is not what you
69# want to  see
70# No particular order  of the reg: lines required.
71reg: cfa 0   # Used with MIPS/IRIX original DWARF2 interface
72reg: r1/at 1
73reg: r2/v0 2
74reg: r3/v1 3
75reg: r4/a0  4
76reg: r5/a1  5
77reg: r6/a2  6
78reg: r7/a3  7
79reg: r8/t0  8
80reg: r9/t1  9
81reg: r10/t2 10
82reg: r11/t3 11
83reg: r12/t4 12
84reg: r13/t5 13
85reg: r14/t6 14
86reg: r15/t7 15
87reg: r16/s0 16
88reg: r17/s1 17
89reg: r18/s2 18
90reg: r19/s3 19
91reg: r20/s4 20
92reg: r21/s5 21
93reg: r22/s6 22
94reg: r23/s7 23
95reg: r24/t8 24
96reg: r25/t9 25
97reg: r26/k0 26
98reg: r27/k1 27
99reg: r28/gp 28
100reg: r29/sp 29
101reg: r30/s8 30
102reg: r31  31
103
104reg: $f0 32
105reg: $f1 33
106reg: $f2  34
107reg: $f3 35
108reg: $f4 36
109reg: $f5 37
110reg: $f6 38
111reg: $f7 39
112reg: $f8 40
113reg: $f9 41
114reg: $f10 42
115reg: $f11 43
116reg: $f12 44
117reg: $f13 45
118reg: $f14  46
119reg: $f15 47
120reg: $f16 48
121reg: $f17 49
122reg: $f18 50
123reg: $f19 51
124reg: $f20 52
125reg: $f21 53
126reg: $f22 54
127reg: $f23 55
128reg: $f24 56
129reg: $f25 57
130reg: $f26 58
131reg: $f27 59
132reg: $f28 60
133reg: $f29 61
134reg: $f30 62
135reg: $f31 63
136reg: ra  64
137reg: slk 65
138
139
140# End of abi definition.
141endabi: mips-irix
142
143
144# Make 'mips' abi be a modern MIPS, not an old IRIX version.
145beginabi: mips
146includeabi: mips-simple3
147endabi: mips
148
149
150# MIPS/IRIX  ISA/ABI for testing libdwarf.
151beginabi: mips-irix2
152frame_interface: 2
153reg_table_size: 66
154cfa_reg: 0
155same_val_reg: 1035
156undefined_val_reg: 1034
157initial_reg_value:  1035
158
159reg: cfa 0   # Used with MIPS/IRIX original DWARF2 interface
160reg: ra  64
161reg: slk 65
162
163# End of abi definition.
164endabi: mips-irix2
165
166# MIPS/IRIX  ISA/ABI for testing  the new frame interface
167# with libdwarf.
168beginabi: mips-simple3
169frame_interface: 3
170
171# When using frame_interface: 3 the size of the register table
172# is not fixed. It can be as large as needed.
173reg_table_size: 66
174cfa_reg: 1436  # DW_FRAME_CFA_COL3
175initial_reg_value:  1035
176same_val_reg: 1035
177undefined_val_reg: 1034
178
179# No cfa as a 'normal' register.
180# Rule 0 is just register 0, which is not used
181# in frame descriptions.
182# (so cfa does not have a number here, and dwarfdump gives
183# it the name 'cfa' automatically).
184reg: ra  64
185reg: slk 65
186# End of abi definition.
187endabi: mips-simple3
188
189
190beginabi: ia64
191frame_interface: 3
192initial_reg_value: 1034  # DW_FRAME_UNDEFINED_VAL
193cfa_reg: 1436  # DW_FRAME_CFA_COL3
194reg_table_size: 695
195same_val_reg: 1035
196undefined_val_reg: 1034
197
198# The following register names are not necessarily correct...
199# Register indexes r32-r127 not used.
200reg: f0 128
201# ...
202reg: f127 255
203reg: b0 321
204reg: b1 322
205reg: b2 323
206reg: b3 324
207reg: b4 325
208reg: b5 326
209reg: b6 327
210reg: b7 328
211reg: vfp 329
212reg: vrap 330
213reg: pr 331
214reg: ip 332
215reg: psr 333
216reg: cfm 334
217reg: k0 335
218reg: k1 336
219reg: k2 337
220reg: k3 338
221reg: k4 339
222reg: k5 340
223reg: k6 341
224reg: k7 342
225reg: rsc  350
226reg: bsp 351
227reg: bspstore 352
228reg: rnat 353
229reg: fcr 355
230reg: eflag 358
231reg: csd 359
232reg: ssd 360
233reg: cflg 361
234reg:  fsr 362
235reg: fir 363
236reg:  fdr 364
237reg: pfs 398
238reg: lc 399
239reg: ec 400
240
241endabi: ia64
242
243
244beginabi: x86
245frame_interface: 3
246initial_reg_value: 1035  # DW_FRAME_SAME_VAL
247reg_table_size: 66  # more than large enough, hopefully.
248cfa_reg: 1436  # DW_FRAME_CFA_COL3
249same_val_reg: 1035
250undefined_val_reg: 1034
251
252# The following register names are not necessarily correct...
253reg: eax 0
254reg: ecx 1
255reg: edx 2
256reg: ebx 3
257reg: esp 4
258reg: ebp 5
259reg: esi 6
260reg: edi 7
261reg: eip 8
262reg: eflags 9
263
264reg: trapno 10
265reg: st0 11
266reg: st1 12
267reg: st2 13
268reg: st3 14
269reg: st4 15
270reg: st5 16
271reg: st6 17
272reg: st7 18
273# 19 is ? 20 is ?
274reg: xmm0  21
275reg: xmm1  22
276reg: xmm2  23
277reg: xmm3  24
278reg: xmm4  25
279reg: xmm5  26
280reg: xmm6  27
281reg: xmm7  28
282
283reg: mm0  29
284reg: mm1  30
285reg: mm2  31
286reg: mm3  32
287reg: mm4  33
288reg: mm5  34
289reg: mm6  35
290reg: mm7  36
291
292reg: fcw  37
293reg: fsw  38
294reg: mxcsr 39
295
296reg: es 40
297reg: cs 41
298reg: ss 42
299reg: ds 43
300reg: fs 44
301reg: gs 45
302# 46 47 are ?
303reg: tr 48
304reg: ldtr 49
305
306
307endabi: x86
308
309
310beginabi: x86_64
311frame_interface: 3
312initial_reg_value: 1035  # DW_FRAME_SAME_VAL
313reg_table_size: 66  # more than large enough, hopefully.
314cfa_reg: 1436  # DW_FRAME_CFA_COL3
315same_val_reg: 1035
316undefined_val_reg: 1034
317
318# The following register names are not necessarily correct...
319reg: rax 0
320reg: rdx 1
321reg: rcx 2
322reg: rbx 3
323reg: rsi 4
324reg: rdi 5
325reg: rbp 6
326reg: rsp 7
327reg: r8 8
328reg: r9 9
329reg: r10 10
330reg: r11 11
331reg: r12 12
332reg: r13 13
333reg: r14 14
334reg: r15 15
335reg: rip 16
336reg: xmm0 17
337reg: xmm1 18
338reg: xmm2 19
339reg: xmm3 20
340reg: xmm4 21
341reg: xmm5 22
342reg: xmm6 23
343reg: xmm7 24
344reg: xmm8 25
345reg: xmm9 26
346reg: xmm10 27
347reg: xmm11 28
348reg: xmm12 29
349reg: xmm13 30
350reg: xmm14 31
351reg: xmm15 32
352
353reg: st0 33
354reg: st1 34
355reg: st2 35
356reg: st3 36
357reg: st4 37
358reg: st5 38
359reg: st6 39
360reg: st7 40
361
362reg: mm0 41
363reg: mm1 42
364reg: mm2 43
365reg: mm3 44
366reg: mm4 45
367reg: mm5 46
368reg: mm6 47
369reg: mm7 48
370
371reg: rflags 49
372reg: es 50
373reg: cs 51
374reg: ss 52
375reg: ds 53
376reg: fs 54
377reg: gs 55
378# 56, 57 are ?
379reg: fs.base 58
380reg: gs.base 59
381# 60 61 are ?
382reg: tr 62
383reg: ldtr 63
384
385endabi: x86_64
386
387beginabi: m68k
388frame_interface: 3
389initial_reg_value: 1035  # DW_FRAME_SAME_VAL
390reg_table_size: 66  # more than large enough, hopefully.
391cfa_reg: 1436  # DW_FRAME_CFA_COL3
392same_val_reg: 1035
393undefined_val_reg: 1034
394
395reg: d0 0
396reg: d1 1
397reg: d2 2
398reg: d3 3
399reg: d4 4
400reg: d5 5
401reg: d6 6
402reg: d7 7
403
404reg: a0 8
405reg: a1 9
406reg: a2 10
407reg: a3 11
408reg: a4 12
409reg: a5 13
410reg: a6 14
411reg: sp 15
412
413reg: fp0 16
414reg: fp1 17
415reg: fp2 18
416reg: fp3 19
417reg: fp4 20
418reg: fp5 21
419reg: fp6 22
420reg: pc 23
421
422endabi: m68k
423
424# Demonstrates  use of address_size and includeabi keywords.
425# address_size is useful when an Elf64 object has DWARF2
426# 32bit (4 byte) address-size frame data (which has no address_size field)
427# and no .debug_info section to provide the 32bit address size.
428beginabi: ppc32bitaddress
429address_size: 4
430includeabi: ppc
431endabi: ppc32bitaddress
432
433beginabi: ppc
434# This abi defined Oct 2008 based on:
435# http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html
436frame_interface: 3
437# abi dwarf table uses up thru 1155.
438# As of Oct 2008, the only ABI requiring a higher
439# DW_FRAME_SAME_VAL and DW_FRAME_CFA_COL3.
440initial_reg_value: 1235  # DW_FRAME_SAME_VAL
441cfa_reg: 1436  # DW_FRAME_CFA_COL3
442same_val_reg: 1235
443undefined_val_reg: 1234
444reg_table_size: 1200
445
446reg: r0 0
447reg: f0 32
448reg: f1 33
449reg: f2 34
450reg: f3 35
451reg: f4 36
452reg: f5 37
453reg: f6 38
454reg: f7 39
455reg: f8 40
456reg: f9 41
457reg: f10 42
458reg: f11 43
459reg: f12 44
460reg: f13 45
461reg: f14 46
462reg: f16 47
463reg: f17 48
464reg: f18 49
465reg: f19 50
466reg: f20 51
467reg: f21 52
468reg: f22 53
469reg: f23 54
470reg: f24 55
471reg: f25 56
472reg: f26 57
473reg: f27 58
474reg: f28 59
475reg: f29 60
476reg: f30 62
477reg: f31 63
478reg: cr  64
479reg: fpcsr 65
480# spr0 is also called MQ
481reg: spr0 100
482# spr1 is also called XER
483reg: spr1 101
484# spr4 also called rtcu
485reg: spr4 104
486# spr5 also called rtcl
487reg: spr5 105
488#spr8 also called LR
489reg: spr8 108
490# spr9 also called ctr
491reg: spr9 109
492reg: msr 66
493reg: sr0 70
494reg: sr1 71
495reg: sr2 72
496reg: sr3 73
497reg: sr4 74
498reg: sr5 75
499reg: sr6 76
500reg: sr7 77
501reg: sr8 78
502reg: sr9 79
503
504#dsisr also called spr18
505reg: spr18 118
506# dar also called spr19
507reg: spr19 119
508#dec also called spr22
509reg: spr22  122
510#sdr1 also called spr25
511reg: spr25  125
512#srr0 also called spr26
513reg: spr26  126
514#srr1 also called spr27
515reg: spr27  127
516
517#vrsave also called spr256
518reg: spr256  356
519#sprg0 also called spr272
520reg: spr272  372
521#sprg1 also called spr273
522reg: spr273  373
523#sprg2 also called spr274
524reg: spr274  374
525#sprg3 also called spr275
526reg: spr275  375
527#asr also called spr280
528reg: spr280  380
529#ear also called spr282
530reg: spr282  382
531#tb also called spr284
532reg: spr284  384
533#tbu also called spr285
534reg: spr285  385
535#pvr also called spr287
536reg: spr287  387
537#ibat0u also called spr528
538reg: spr528  628
539#ibat0l also called spr529
540reg: spr529  629
541#ibat1u also called spr530
542reg: spr530  630
543#ibat1l also called spr531
544reg: spr531  631
545#ibat2u also called spr532
546reg: spr532  632
547#ibat2l also called spr533
548reg: spr533  633
549#ibat3u also called spr534
550reg: spr534  634
551#ibat3l also called spr535
552reg: spr535  635
553#dbat0u also called spr536
554reg: spr536  636
555#dbat0l also called spr537
556reg: spr537  637
557#dbat1u also called spr538
558reg: spr538  638
559#dbat1l also called spr539
560reg: spr539  639
561#dbat2u also called spr540
562reg: spr540  640
563#dbat2l also called spr541
564reg: spr541  641
565#dbat3u also called spr542
566reg: spr542  642
567#dbat3l also called spr543
568reg: spr543  643
569
570#hid0 also called spr1008
571reg: spr1008  1108
572#hid1 also called spr1009
573reg: spr1009  1109
574#hid2 also called iabr or spr1010
575reg: spr1010  1110
576#hid5 also called  dabr or spr1013
577reg: spr1013  1113
578#hid15 also called  pir or spr1023
579reg: spr1023  1123
580
581# vector registers 0-31
582reg: vr0  1124
583reg: vr1  1125
584reg: vr2  1126
585reg: vr3  1127
586reg: vr4  1128
587reg: vr5  1129
588reg: vr6  1130
589reg: vr7  1131
590reg: vr8  1132
591reg: vr9  1133
592reg: vr10  1134
593reg: vr11  1135
594reg: vr12  1136
595reg: vr13  1137
596reg: vr14  1138
597reg: vr15  1130
598reg: vr16  1140
599reg: vr17  1141
600reg: vr18  1142
601reg: vr19  1143
602reg: vr20  1144
603reg: vr21  1145
604reg: vr22  1146
605reg: vr23  1147
606reg: vr24  1148
607reg: vr25  1149
608reg: vr26  1150
609reg: vr27  1151
610reg: vr28  1152
611reg: vr29  1153
612reg: vr30  1154
613reg: vr31  1155
614endabi:  ppc
615
616# 'Generic 1000 register abi'.
617# This is useful as a 'general' ABI settings for
618# cpus using up to 1000 registers. The register names
619# show as a number, like  'r991'.
620beginabi: generic
621frame_interface: 3
622initial_reg_value: 1035  # DW_FRAME_SAME_VAL
623cfa_reg: 1436  # DW_FRAME_CFA_COL3
624reg_table_size: 1000
625same_val_reg: 1035
626undefined_val_reg: 1034
627reg: r0 0
628endabi: generic
629
630# 'Generic 500 register abi'.
631# This is useful as a 'general' ABI settings for
632# cpus using up to 500 registers. The register names
633# show as a number, like  'r91'.
634beginabi: generic500
635frame_interface: 3
636initial_reg_value: 1035  # DW_FRAME_SAME_VAL
637cfa_reg: 1436  # DW_FRAME_CFA_COL3
638reg_table_size: 500
639same_val_reg: 1035
640undefined_val_reg: 1034
641reg: r0 0
642endabi: generic500
643
644# 'Generic 100 register abi'.
645# This is useful as a 'general' ABI settings for
646# cpus using up to 100 registers. The register names
647# show as a number, like  'r91'.
648beginabi: generic100
649frame_interface: 3
650initial_reg_value: 1035  # DW_FRAME_SAME_VAL
651cfa_reg: 1436  # DW_FRAME_CFA_COL3
652reg_table_size: 100
653same_val_reg: 1035
654undefined_val_reg: 1034
655reg: r0 0
656endabi: generic100
657
658
659beginabi: arm
660frame_interface: 3
661# When using frame_interface: 3 the size of the register
662# table is not fixed.  It can be as large as needed.
663reg_table_size: 288
664cfa_reg: 1436  # DW_FRAME_CFA_COL3
665initial_reg_value:  1034
666same_val_reg: 1035
667undefined_val_reg: 1034
668# If the vendor co-processor registers are allowed
669# or other numbers above 287 used then
670# the reg_table_size must be increased and (possibly)
671# the cfa, same_value, undefined_value reg values changed
672# here.
673# r0-r15 are 0 through 15.
674# Numbers 16 through 63 had meaning
675# in some ARM DWARF register mappings.
676reg: s0 64
677reg: s1 65
678reg: s2 66
679reg: s3 67
680reg: s4 68
681reg: s5 69
682reg: s6 70
683reg: s7 71
684reg: s8 72
685reg: s9 73
686reg: s10 74
687reg: s11 75
688reg: s12 76
689reg: s13 77
690reg: s14 78
691reg: s15 79
692reg: s16 80
693reg: s17 81
694reg: s18 82
695reg: s19 83
696reg: s20 84
697reg: s21 85
698reg: s22 86
699reg: s23 87
700reg: s24 88
701reg: s25 89
702reg: s26 90
703reg: s27 91
704reg: s28 92
705reg: s29 93
706reg: s30 94
707reg: s31 95
708reg: f0 96
709reg: f1 97
710reg: f2 98
711reg: f3 99
712reg: f4 100
713reg: f5 101
714reg: f6 102
715reg: f7 103
716reg: wcgr0 104
717reg: wcgr0 105
718reg: wcgr0 106
719reg: wcgr0 107
720reg: wcgr0 108
721reg: wcgr0 109
722reg: wcgr0 110
723reg: wcgr0 111
724reg: wr0   112
725reg: wr1   113
726reg: wr2   114
727reg: wr3   115
728reg: wr4   116
729reg: wr5   117
730reg: wr6   118
731reg: wr7   119
732reg: wr8   120
733reg: wr9   121
734reg: wr10   122
735reg: wr11   123
736reg: wr12   124
737reg: wr13   125
738reg: wr14   126
739reg: wr15   127
740reg: spsr   128
741reg: spsr_fiq   129
742reg: spsr_irq   130
743reg: spsr_abt   131
744reg: spsr_und   132
745reg: spsr_svc   133
746reg: r8_usr     144
747reg: r9_usr     145
748reg: r10_usr     146
749reg: r11_usr     147
750reg: r12_usr     148
751reg: r13_usr     149
752reg: r14_usr     150
753reg: r8_fiq     151
754reg: r9_fiq     152
755reg: r10_fiq     153
756reg: r11_fiq     154
757reg: r12_fiq     155
758reg: r13_fiq     156
759reg: r14_fiq     157
760reg: r13_riq     158
761reg: r14_riq     159
762reg: r14_abt     160
763reg: r13_abt     161
764reg: r14_und     162
765reg: r13_und     163
766reg: r14_svc     164
767reg: r13_svc     165
768reg: wc0     192
769reg: wc1     193
770reg: wc2     192
771reg: wc3     192
772reg: wc4     192
773reg: wc5     197
774reg: wc6     198
775reg: wc7     199
776reg: d0     256
777reg: d1     257
778reg: d2     258
779reg: d3     259
780reg: d4     260
781reg: d5     261
782reg: d6     262
783reg: d7     263
784reg: d8     264
785reg: d9     265
786reg: d10     266
787reg: d11     267
788reg: d12     268
789reg: d13     269
790reg: d14     270
791reg: d15     271
792reg: d16     272
793reg: d17     273
794reg: d18     274
795reg: d19     275
796reg: d20     266
797reg: d21     277
798reg: d22     278
799reg: d23     279
800reg: d24     280
801reg: d25     281
802reg: d26     282
803reg: d27     283
804reg: d28     284
805reg: d29     285
806reg: d30     286
807reg: d31     287
808# End of abi definition.
809endabi: arm
810
811