Changeset bd0b98d in rtems-tools for tools/gdb


Ignore:
Timestamp:
Aug 26, 2013, 4:42:25 PM (6 years ago)
Author:
Dhananjay Balan <mb.dhananjay@…>
Branches:
4.10, 4.11, master
Children:
f750e82
Parents:
5a4834c
git-author:
Dhananjay Balan <mb.dhananjay@…> (08/26/13 16:42:25)
git-committer:
Chris Johns <chrisj@…> (08/24/14 23:52:42)
Message:

Add cpu registers to task output.

Location:
tools/gdb/python
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • tools/gdb/python/classic.py

    r5a4834c rbd0b98d  
    1717import heaps
    1818import supercore
     19import sparc
    1920
    2021class attribute:
     
    156157            threads.control(self.object)
    157158        self.wait_info = self.task.wait_info()
     159        # ToDo: Insert platform dep. code here.
     160        self.regs = sparc.register(self.object['Registers'])
    158161
    159162    def show(self, from_tty):
     
    164167        print '  Preempt:', self.task.preemptible()
    165168        print ' T Budget:', self.task.cpu_time_budget()
     169        print ' Regsters:'
     170        self.regs.show()
    166171
    167172
  • tools/gdb/python/sparc.py

    r5a4834c rbd0b98d  
    55from helper import test_bit
    66
    7 class psr:
    8     '''status register'''
    97
    10     sv_table = {
    11         0 : 'user',
    12         1 : 'superviser'
    13     }
    14 
    15 
    16     def __init__(self, psr):
    17         self.psr = psr
    18 
    19     def current_window(self):
    20         return int(self.psr & 0xf)
    21 
    22     def traps(self):
    23         return test_bit(self.psr, 5)
    24 
    25     def prev_superviser(self):
    26         return int(test_bit(self.psr,6))
    27 
    28     def superviser(self):
    29         return int(test_bit(self.psr,7))
    30 
    31     def interrupt_level(self):
    32         # bits 8 to 11
    33         return (self.spr & 0x780) >> 7
    34 
    35     def floating_point_status(self):
    36         return test_bit(self.psr, 12)
    37 
    38     def coproc_status(self):
    39         return test_bit(self.psr,13)
    40 
    41     def carry(self):
    42         return test_bit(self.psr, 20)
    43 
    44     def overflow(self):
    45         return test_bit(self.psr, 21)
    46 
    47     def zero(self):
    48         return test_bit(self.psr, 22)
    49 
    50     def icc(self):
    51         n = test_bit(self.psr,23)
    52         z = test_bit(self.psr,22)
    53         v = test_bit(self.psr,21)
    54         c = test_bit(self.psr,20)
    55         return (n,z,v,c)
    56 
    57     def to_string(self):
    58         val = "     Status Register"
    59         val += "\n         R Window : " + str(self.current_window())
    60         val += "\n    Traps Enabled : " + str(self.traps())
    61         val += "\n   Flaoting Point : " + str(self.floating_point_status())
    62         val += "\n      Coprocessor : " + str(self.coproc_status())
    63         val += "\n   Processor Mode : " + self.sv_table[self.superviser()]
    64         val += "\n       Prev. Mode : " + self.sv_table[self.superviser()]
    65         val += "\n            Carry : " + str(int(self.carry()))
    66         val += "\n         Overflow : " + str(int(self.overflow()))
    67         val += "\n             Zero : " + str(int(self.zero()))
    68 
    69         return val
    708
    719class register:
    7210    '''SPARC Registers'''
     11
     12    class psr:
     13        '''status register'''
     14
     15        sv_table = {
     16            0 : 'user',
     17            1 : 'superviser'
     18        }
     19
     20
     21        def __init__(self, psr):
     22            self.psr = psr
     23
     24        def current_window(self):
     25            return int(self.psr & 0xf)
     26
     27        def traps(self):
     28            return test_bit(self.psr, 5)
     29
     30        def prev_superviser(self):
     31            return int(test_bit(self.psr,6))
     32
     33        def superviser(self):
     34            return int(test_bit(self.psr,7))
     35
     36        def interrupt_level(self):
     37            # bits 8 to 11
     38            return (self.spr & 0x780) >> 7
     39
     40        def floating_point_status(self):
     41            return test_bit(self.psr, 12)
     42
     43        def coproc_status(self):
     44            return test_bit(self.psr,13)
     45
     46        def carry(self):
     47            return test_bit(self.psr, 20)
     48
     49        def overflow(self):
     50            return test_bit(self.psr, 21)
     51
     52        def zero(self):
     53            return test_bit(self.psr, 22)
     54
     55        def icc(self):
     56            n = test_bit(self.psr,23)
     57            z = test_bit(self.psr,22)
     58            v = test_bit(self.psr,21)
     59            c = test_bit(self.psr,20)
     60            return (n,z,v,c)
     61
     62        def to_string(self):
     63            val = "     Status Register"
     64            val += "\n         R Window : " + str(self.current_window())
     65            val += "\n    Traps Enabled : " + str(self.traps())
     66            val += "\n   Flaoting Point : " + str(self.floating_point_status())
     67            val += "\n      Coprocessor : " + str(self.coproc_status())
     68            val += "\n   Processor Mode : " + self.sv_table[self.superviser()]
     69            val += "\n       Prev. Mode : " + self.sv_table[self.superviser()]
     70            val += "\n            Carry : " + str(int(self.carry()))
     71            val += "\n         Overflow : " + str(int(self.overflow()))
     72            val += "\n             Zero : " + str(int(self.zero()))
     73
     74            return val
    7375
    7476    def __init__(self,reg):
     
    109111        return val
    110112
     113    def status(self):
     114        return self.psr(self.reg['psr'])
    111115
     116    def show(self):
     117        print '         Global Regs:',
     118        print ' [',
     119        for i in self.global_regs():
     120            print str(i)+',',
     121        print '\b\b ]'
    112122
     123        print '          Local Regs:',
     124        print ' [',
     125        for i in self.local_regs():
     126            print str(i)+',',
     127        print '\b\b ]'
    113128
     129        print '             In Regs:',
     130        print ' [',
     131        for i in self.in_regs():
     132            print str(i)+',',
     133        print '\b\b ]'
    114134
     135        print '            Out Regs:',
     136        print ' [',
     137        for i in self.out_regs():
     138            print str(i)+',',
     139        print '\b\b ]'
    115140
     141        sr = self.status()
     142        print sr.to_string()
Note: See TracChangeset for help on using the changeset viewer.