OSDN Git Service

2006-06-26 Dave Brolley <brolley@redhat.com>
authorbrolley <brolley>
Mon, 26 Jun 2006 21:09:33 +0000 (21:09 +0000)
committerbrolley <brolley>
Mon, 26 Jun 2006 21:09:33 +0000 (21:09 +0000)
        * arm7f.h (get_pc): New member of arm7f_cpu.
        * hw-cpu-arm7t.txt: Regenerated.

sid/component/cgen-cpu/arm7t/ChangeLog
sid/component/cgen-cpu/arm7t/arm7f.h
sid/component/cgen-cpu/arm7t/hw-cpu-arm7t.txt

index 4e76517..8c33941 100644 (file)
@@ -1,3 +1,8 @@
+2006-06-26  Dave Brolley  <brolley@redhat.com>
+
+       * arm7f.h (get_pc): New member of arm7f_cpu.
+       * hw-cpu-arm7t.txt: Regenerated.
+
 2006-03-29  Harry Hsin-Hua Pan  <harry@andestech.com>
 
        * arm7f.cxx (compute_operand2_immshift): Implement RRX.
index 0d6b0f3..b737e94 100644 (file)
@@ -130,6 +130,12 @@ private:
       this->h_pc_set ((PCADDR) v);
     }
 
+  host_int_4
+  get_pc ()
+    {
+      return this->h_pc_get ();
+    }
+
   // debug support routines
   string dbg_get_reg (host_int_4 n);
   component::status dbg_set_reg (host_int_4 n, const string& s);
index b4ca062..8ffe17b 100644 (file)
@@ -17,229 +17,225 @@ Functionality:
    It models supervisory functions such as exceptions/traps in order to be
    able to run an operating system.
 
-   +-----------------------------------------------------+
-   |                      Behaviors                      |
-   |-----------------------------------------------------|
-   |  initialization|The CPU performs a power-on-reset   |
-   |                |style of operation when the reset!  |
-   |                |pin is driven.                      |
-   |                |                                    |
-   |                |Other mode settings may be          |
-   |                |controlled by pins and/or           |
-   |                |attributes: endian-set!/endian to   |
-   |                |set endianness, start-pc-set! to set|
-   |                |the PC. These are useful if the     |
-   |                |standard powerup state of the CPU   |
-   |                |needs to be changed for running a   |
-   |                |program that expects an initialized |
-   |                |environment.                        |
-   |----------------+------------------------------------|
-   |       execution|The component executes zero or more |
-   |                |instructions when the step! pin is  |
-   |                |driven. You can specify the maximum |
-   |                |number of instructions to be        |
-   |                |executed via the step-insn-count    |
-   |                |attribute. If the yield pin is      |
-   |                |driven in a reentrant fashion while |
-   |                |the instruction loop is active, the |
-   |                |loop will be exited at the next     |
-   |                |opportunity. At the end of the loop,|
-   |                |the step-cycles output pin is driven|
-   |                |with the number of instructions     |
-   |                |actually executed, though this value|
-   |                |is clamped to be at least 1. The    |
-   |                |insn-count attribute accumulates the|
-   |                |total number of instructions        |
-   |                |executed since reset.               |
-   |                |                                    |
-   |                |Each instruction is first fetched   |
-   |                |from memory via the insn-memory     |
-   |                |accessor, and its decoding traced if|
-   |                |the trace-extract? attribute is set |
-   |                |to a true value. To prevent unwanted|
-   |                |cache side effects, the             |
-   |                |disassembler-memory accessor can be |
-   |                |used and connected directly to main |
-   |                |memory, bypassing any memory caches.|
-   |                |The decoded form may be cached      |
-   |                |indefinitely afterwards, although   |
-   |                |this cache is flushed when the      |
-   |                |flush-icache pin is driven.         |
-   |                |                                    |
-   |                |The engine-type attribute specifies |
-   |                |whether the "scache" ("semantic     |
-   |                |cache") or "pbb" ("pseudo basic     |
-   |                |block") dispatching mechanism is    |
-   |                |used during execution. The "scache" |
-   |                |mode executes each instruction in   |
-   |                |isolation and checks all            |
-   |                |triggerpoints after each. If the    |
-   |                |enable-step-trap? attribute is set, |
-   |                |after each instruction, a           |
-   |                |single-stepping trap is signalled as|
-   |                |described in the exceptions/traps   |
-   |                |behavior below.                     |
-   |                |                                    |
-   |                |The "pbb" mode executes a series of |
-   |                |sequential instructions in one      |
-   |                |uninterruptible sequence, and is    |
-   |                |thus faster. However, it cannot     |
-   |                |handle triggerpoints or             |
-   |                |single-stepping, nor can it respond |
-   |                |to icache flushing as quickly. The  |
-   |                |"pbb" mode is temporarily and       |
-   |                |transparently downgraded to the     |
-   |                |"scache" mode when needed.          |
-   |                |                                    |
-   |                |During the execution of an          |
-   |                |instruction, this component may make|
-   |                |accesses using the data-memory      |
-   |                |accessor, may update its simulated  |
-   |                |registers, and may trigger an       |
-   |                |exception/trap.                     |
-   |----------------+------------------------------------|
-   |         tracing|The component can be configured to  |
-   |                |perform certain kinds of tracing as |
-   |                |target programs execute. These are  |
-   |                |controlled by the family of trace-* |
-   |                |boolean attributes. By default,     |
-   |                |trace output is directed to the     |
-   |                |standard output stream. The         |
-   |                |trace-filename attribute allows the |
-   |                |user to specify the name of a file  |
-   |                |where trace output will be          |
-   |                |collected. A special filename of "-"|
-   |                |is used to represent standard       |
-   |                |output. Trace output files are not  |
-   |                |appended, but overwritten each time |
-   |                |they are opened. The                |
-   |                |print-insn-summary! pin can be      |
-   |                |driven to print a summary of        |
-   |                |instruction and cycle counts,       |
-   |                |usually at the end of the           |
-   |                |simulation. The trace pin can be    |
-   |                |driven with any value which will be |
-   |                |output as a character into the trace|
-   |                |stream.                             |
-   |----------------+------------------------------------|
-   |exceptions/traps|When encountering exception/trap    |
-   |                |conditions such as memory access    |
-   |                |errors or software interrupts, this |
-   |                |component signals the event using   |
-   |                |the trap pin. (For some traps, the  |
-   |                |trap-code pin is driven with extra  |
-   |                |information just beforehand.) An    |
-   |                |external component may interpret the|
-   |                |values in the table below, and      |
-   |                |declare a disposition for the       |
-   |                |condition. In the absence of input, |
-   |                |the condition will be treated as the|
-   |                |hardware would, that is by          |
-   |                |dispatching to exception vectors,   |
-   |                |switching processor modes, etc.     |
-   |                |                                    |
-   |                |The trap codes sent on the trap     |
-   |                |output pin are:                     |
-   |                |                                    |
-   |                |+----------------------------------+|
-   |                || trap | cause       | trap-code   ||
-   |                ||------+-------------+-------------||
-   |                || 1    | software    | instruction ||
-   |                ||      | trap        | bitmap      ||
-   |                ||------+-------------+-------------||
-   |                || 2    | breakpoint  | bkpt number ||
-   |                ||------+-------------+-------------||
-   |                || 3    | system call | syscall     ||
-   |                ||      |             | number      ||
-   |                ||------+-------------+-------------||
-   |                || 4    | invalid     | n/a         ||
-   |                ||      | instruction |             ||
-   |                ||------+-------------+-------------||
-   |                || 5    | memory      | faulting    ||
-   |                ||      | fault       | address     ||
-   |                ||------+-------------+-------------||
-   |                || 6    | arithmetic  | faulting    ||
-   |                ||      | overflow    | address     ||
-   |                ||------+-------------+-------------||
-   |                || 7    | stepped     | n/a         ||
-   |                |+----------------------------------+|
-   |                |                                    |
-   |                |The disposition codes returned on   |
-   |                |the trap input pin are:             |
-   |                |                                    |
-   |                |+----------------------------------+|
-   |                || trap     | effect                ||
-   |                ||----------+-----------------------||
-   |                || 0 or n/a | dispatch as hardware  ||
-   |                ||          | would                 ||
-   |                ||----------+-----------------------||
-   |                || 1        | handled; continue     ||
-   |                ||----------+-----------------------||
-   |                || 2        | reissue               ||
-   |                ||----------+-----------------------||
-   |                ||          | handled; skip         ||
-   |                || 3        | instruction and       ||
-   |                ||          | continue              ||
-   |                |+----------------------------------+|
-   |----------------+------------------------------------|
-   |        hardware|Hardware interrupts are signalled by|
-   |      interrupts|driving the pins nfiq or nirq with a|
-   |                |zero value. Incoming interrupts are |
-   |                |queued and are processed when the   |
-   |                |step! pin is next invoked. Note that|
-   |                |this may not be the next instruction|
-   |                |if the step-insn-count attribute is |
-   |                |greater than one. Also note that    |
-   |                |these pins are level sensitive, so  |
-   |                |interrupts will occur repeatedly    |
-   |                |until the pin is driven non-zero.   |
-   |                |They are 'pulled' to one (high) at  |
-   |                |processor invocation and reset.     |
-   |----------------+------------------------------------|
-   | register access|All 16 general purpose registers are|
-   |                |accessible as attribute r0 through  |
-   |                |r15. pc is an alias of r15. The CPSR|
-   |                |register is accessible as cpsr, and |
-   |                |also as cpsr-flags for a decoded    |
-   |                |textual form. The current endianness|
-   |                |is available as attribute endian.   |
-   |                |The current cpsr mode is available  |
-   |                |as attribute/pin nm. The current    |
-   |                |thumb/arm bit is available as       |
-   |                |attribute/pin tbit.                 |
-   |                |                                    |
-   |                |Banked registers (e.g. r14_svc,     |
-   |                |spsr_und) are also exposed as       |
-   |                |read/write attributes.              |
-   |                |                                    |
-   |                |This component exports a number of  |
-   |                |attributes for use by the           |
-   |                |sw-debug-gdb component. These are   |
-   |                |the gdb-* attributes, in the        |
-   |                |"debugger" category. The            |
-   |                |gdb-register-N group access all     |
-   |                |registers in gdb's indexing scheme, |
-   |                |in raw target byte order. The       |
-   |                |gdb-register-pc is a special        |
-   |                |watchable value with no associated  |
-   |                |attribute. The gdb-num-registers    |
-   |                |attribute provides the limit for N. |
-   |                |The gdb-exp-registers attribute     |
-   |                |provides a semicolon-separated list |
-   |                |of "expedited" register numbers.    |
-   |                |                                    |
-   |                |The debugger-bus bus provides access|
-   |                |to the target program's address     |
-   |                |space, and is used by gdb to access |
-   |                |target memory.                      |
-   |                |                                    |
-   |                |The gdb-breakpoint-big and          |
-   |                |gdb-breakpoint-little attributes, if|
-   |                |present, are used as memory images  |
-   |                |of software breakpoint instructions |
-   |                |for the appropriate run-time        |
-   |                |endianness mode.                    |
-   +-----------------------------------------------------+
+   +---------------------------------------------------------+
+   |                        Behaviors                        |
+   |---------------------------------------------------------|
+   |  initialization|The CPU performs a power-on-reset style |
+   |                |of operation when the reset! pin is     |
+   |                |driven.                                 |
+   |                |                                        |
+   |                |Other mode settings may be controlled by|
+   |                |pins and/or attributes:                 |
+   |                |endian-set!/endian to set endianness,   |
+   |                |start-pc-set! to set the PC. These are  |
+   |                |useful if the standard powerup state of |
+   |                |the CPU needs to be changed for running |
+   |                |a program that expects an initialized   |
+   |                |environment.                            |
+   |----------------+----------------------------------------|
+   |       execution|The component executes zero or more     |
+   |                |instructions when the step! pin is      |
+   |                |driven. You can specify the maximum     |
+   |                |number of instructions to be executed   |
+   |                |via the step-insn-count attribute. If   |
+   |                |the yield pin is driven in a reentrant  |
+   |                |fashion while the instruction loop is   |
+   |                |active, the loop will be exited at the  |
+   |                |next opportunity. At the end of the     |
+   |                |loop, the step-cycles output pin is     |
+   |                |driven with the number of instructions  |
+   |                |actually executed, though this value is |
+   |                |clamped to be at least 1. The insn-count|
+   |                |attribute accumulates the total number  |
+   |                |of instructions executed since reset.   |
+   |                |                                        |
+   |                |Each instruction is first fetched from  |
+   |                |memory via the insn-memory accessor, and|
+   |                |its decoding traced if the              |
+   |                |trace-extract? attribute is set to a    |
+   |                |true value. To prevent unwanted cache   |
+   |                |side effects, the disassembler-memory   |
+   |                |accessor can be used and connected      |
+   |                |directly to main memory, bypassing any  |
+   |                |memory caches. The decoded form may be  |
+   |                |cached indefinitely afterwards, although|
+   |                |this cache is flushed when the          |
+   |                |flush-icache pin is driven.             |
+   |                |                                        |
+   |                |The engine-type attribute specifies     |
+   |                |whether the "scache" ("semantic cache") |
+   |                |or "pbb" ("pseudo basic block")         |
+   |                |dispatching mechanism is used during    |
+   |                |execution. The "scache" mode executes   |
+   |                |each instruction in isolation and checks|
+   |                |all triggerpoints after each. If the    |
+   |                |enable-step-trap? attribute is set,     |
+   |                |after each instruction, a               |
+   |                |single-stepping trap is signalled as    |
+   |                |described in the exceptions/traps       |
+   |                |behavior below.                         |
+   |                |                                        |
+   |                |The "pbb" mode executes a series of     |
+   |                |sequential instructions in one          |
+   |                |uninterruptible sequence, and is thus   |
+   |                |faster. However, it cannot handle       |
+   |                |triggerpoints or single-stepping, nor   |
+   |                |can it respond to icache flushing as    |
+   |                |quickly. The "pbb" mode is temporarily  |
+   |                |and transparently downgraded to the     |
+   |                |"scache" mode when needed.              |
+   |                |                                        |
+   |                |During the execution of an instruction, |
+   |                |this component may make accesses using  |
+   |                |the data-memory accessor, may update its|
+   |                |simulated registers, and may trigger an |
+   |                |exception/trap.                         |
+   |----------------+----------------------------------------|
+   |         tracing|The component can be configured to      |
+   |                |perform certain kinds of tracing as     |
+   |                |target programs execute. These are      |
+   |                |controlled by the family of trace-*     |
+   |                |boolean attributes. By default, trace   |
+   |                |output is directed to the standard      |
+   |                |output stream. The trace-filename       |
+   |                |attribute allows the user to specify the|
+   |                |name of a file where trace output will  |
+   |                |be collected. A special filename of "-" |
+   |                |is used to represent standard output.   |
+   |                |Trace output files are not appended, but|
+   |                |overwritten each time they are opened.  |
+   |                |The print-insn-summary! pin can be      |
+   |                |driven to print a summary of instruction|
+   |                |and cycle counts, usually at the end of |
+   |                |the simulation. The trace pin can be    |
+   |                |driven with any value which will be     |
+   |                |output as a character into the trace    |
+   |                |stream.                                 |
+   |----------------+----------------------------------------|
+   |       profiling|The component can be configured to      |
+   |                |provide samples for use by the          |
+   |                |sw-profile-gprof component in creating a|
+   |                |gmon output file. A sample is provided  |
+   |                |each time the sample-gprof is driven.   |
+   |                |Each time, before the sample-gprof is   |
+   |                |driven, the gprof-pc and gprof-pc-hi    |
+   |                |pins will be driven in order to provide |
+   |                |the current program counter. gprof-pc   |
+   |                |represents the low order 32 bits of the |
+   |                |pc and gprof-pc-hi represents the high  |
+   |                |order 32 bits of the pc (if any).       |
+   |----------------+----------------------------------------|
+   |exceptions/traps|When encountering exception/trap        |
+   |                |conditions such as memory access errors |
+   |                |or software interrupts, this component  |
+   |                |signals the event using the trap pin.   |
+   |                |(For some traps, the trap-code pin is   |
+   |                |driven with extra information just      |
+   |                |beforehand.) An external component may  |
+   |                |interpret the values in the table below,|
+   |                |and declare a disposition for the       |
+   |                |condition. In the absence of input, the |
+   |                |condition will be treated as the        |
+   |                |hardware would, that is by dispatching  |
+   |                |to exception vectors, switching         |
+   |                |processor modes, etc.                   |
+   |                |                                        |
+   |                |The trap codes sent on the trap output  |
+   |                |pin are:                                |
+   |                |                                        |
+   |                |+--------------------------------------+|
+   |                || trap | cause           | trap-code   ||
+   |                ||------+-----------------+-------------||
+   |                || 1    | software trap   | instruction ||
+   |                ||      |                 | bitmap      ||
+   |                ||------+-----------------+-------------||
+   |                || 2    | breakpoint      | bkpt number ||
+   |                ||------+-----------------+-------------||
+   |                || 3    | system call     | syscall     ||
+   |                ||      |                 | number      ||
+   |                ||------+-----------------+-------------||
+   |                || 4    | invalid         | n/a         ||
+   |                ||      | instruction     |             ||
+   |                ||------+-----------------+-------------||
+   |                || 5    | memory fault    | faulting    ||
+   |                ||      |                 | address     ||
+   |                ||------+-----------------+-------------||
+   |                || 6    | arithmetic      | faulting    ||
+   |                ||      | overflow        | address     ||
+   |                ||------+-----------------+-------------||
+   |                || 7    | stepped         | n/a         ||
+   |                |+--------------------------------------+|
+   |                |                                        |
+   |                |The disposition codes returned on the   |
+   |                |trap input pin are:                     |
+   |                |                                        |
+   |                |+--------------------------------------+|
+   |                || trap     | effect                    ||
+   |                ||----------+---------------------------||
+   |                || 0 or n/a | dispatch as hardware      ||
+   |                ||          | would                     ||
+   |                ||----------+---------------------------||
+   |                || 1        | handled; continue         ||
+   |                ||----------+---------------------------||
+   |                || 2        | reissue                   ||
+   |                ||----------+---------------------------||
+   |                || 3        | handled; skip instruction ||
+   |                ||          | and continue              ||
+   |                |+--------------------------------------+|
+   |----------------+----------------------------------------|
+   |        hardware|Hardware interrupts are signalled by    |
+   |      interrupts|driving the pins nfiq or nirq with a    |
+   |                |zero value. Incoming interrupts are     |
+   |                |queued and are processed when the step! |
+   |                |pin is next invoked. Note that this may |
+   |                |not be the next instruction if the      |
+   |                |step-insn-count attribute is greater    |
+   |                |than one. Also note that these pins are |
+   |                |level sensitive, so interrupts will     |
+   |                |occur repeatedly until the pin is driven|
+   |                |non-zero. They are 'pulled' to one      |
+   |                |(high) at processor invocation and      |
+   |                |reset.                                  |
+   |----------------+----------------------------------------|
+   | register access|All 16 general purpose registers are    |
+   |                |accessible as attribute r0 through r15. |
+   |                |pc is an alias of r15. The CPSR register|
+   |                |is accessible as cpsr, and also as      |
+   |                |cpsr-flags for a decoded textual form.  |
+   |                |The current endianness is available as  |
+   |                |attribute endian. The current cpsr mode |
+   |                |is available as attribute/pin nm. The   |
+   |                |current thumb/arm bit is available as   |
+   |                |attribute/pin tbit.                     |
+   |                |                                        |
+   |                |Banked registers (e.g. r14_svc,         |
+   |                |spsr_und) are also exposed as read/write|
+   |                |attributes.                             |
+   |                |                                        |
+   |                |This component exports a number of      |
+   |                |attributes for use by the sw-debug-gdb  |
+   |                |component. These are the gdb-*          |
+   |                |attributes, in the "debugger" category. |
+   |                |The gdb-register-N group access all     |
+   |                |registers in gdb's indexing scheme, in  |
+   |                |raw target byte order. The              |
+   |                |gdb-register-pc is a special watchable  |
+   |                |value with no associated attribute. The |
+   |                |gdb-num-registers attribute provides the|
+   |                |limit for N. The gdb-exp-registers      |
+   |                |attribute provides a semicolon-separated|
+   |                |list of "expedited" register numbers.   |
+   |                |                                        |
+   |                |The debugger-bus bus provides access to |
+   |                |the target program's address space, and |
+   |                |is used by gdb to access target memory. |
+   |                |                                        |
+   |                |The gdb-breakpoint-big and              |
+   |                |gdb-breakpoint-little attributes, if    |
+   |                |present, are used as memory images of   |
+   |                |software breakpoint instructions for the|
+   |                |appropriate run-time endianness mode.   |
+   +---------------------------------------------------------+
 
    +-------------------------------------------------+
    |                 SID Conventions                 |
@@ -282,46 +278,51 @@ Component Reference:
 
   Component: hw-cpu-arm7t
 
-   +-----------------------------------------------------------------+
-   |                              pins                               |
-   |-----------------------------------------------------------------|
-   |       name        |direction|   legalvalues    |   behaviors    |
-   |-------------------+---------+------------------+----------------|
-   |endian-set!        |in       |1 (big) / 2       |initialization  |
-   |                   |         |(little)          |                |
-   |-------------------+---------+------------------+----------------|
-   |start-pc-set!      |in       |any value         |initialization  |
-   |-------------------+---------+------------------+----------------|
-   |reset!             |in       |0 or 1            |initialization  |
-   |-------------------+---------+------------------+----------------|
-   |trap               |inout    |enum values       |exceptions/traps|
-   |-------------------+---------+------------------+----------------|
-   |trap-code          |out      |various values    |exceptions/traps|
-   |-------------------+---------+------------------+----------------|
-   |step-cycles        |out      |1..step-insn-count|execution       |
-   |-------------------+---------+------------------+----------------|
-   |step!              |in       |any value         |execution       |
-   |-------------------+---------+------------------+----------------|
-   |yield              |in       |any               |execution       |
-   |-------------------+---------+------------------+----------------|
-   |flush-icache       |in       |any               |execution       |
-   |-------------------+---------+------------------+----------------|
-   |print-insn-summary!|in       |any               |tracing         |
-   |-------------------+---------+------------------+----------------|
-   |trace              |in       |any               |tracing         |
-   |-------------------+---------+------------------+----------------|
-   |nreset             |in       |0 or 1            |execution       |
-   |-------------------+---------+------------------+----------------|
-   |nm                 |out      |0 or 1            |register access |
-   |-------------------+---------+------------------+----------------|
-   |tbit               |out      |0 or 1            |register access |
-   |-------------------+---------+------------------+----------------|
-   |nfiq               |in       |0 or 1            |hardware        |
-   |                   |         |                  |interrupts      |
-   |-------------------+---------+------------------+----------------|
-   |nirq               |in       |0 or 1            |hardware        |
-   |                   |         |                  |interrupts      |
-   +-----------------------------------------------------------------+
+   +-------------------------------------------------------------------------+
+   |                                  pins                                   |
+   |-------------------------------------------------------------------------|
+   |        name         | direction |    legalvalues     |    behaviors     |
+   |---------------------+-----------+--------------------+------------------|
+   |endian-set!          |in         |1 (big) / 2 (little)|initialization    |
+   |---------------------+-----------+--------------------+------------------|
+   |start-pc-set!        |in         |any value           |initialization    |
+   |---------------------+-----------+--------------------+------------------|
+   |reset!               |in         |0 or 1              |initialization    |
+   |---------------------+-----------+--------------------+------------------|
+   |trap                 |inout      |enum values         |exceptions/traps  |
+   |---------------------+-----------+--------------------+------------------|
+   |trap-code            |out        |various values      |exceptions/traps  |
+   |---------------------+-----------+--------------------+------------------|
+   |step-cycles          |out        |1..step-insn-count  |execution         |
+   |---------------------+-----------+--------------------+------------------|
+   |step!                |in         |any value           |execution         |
+   |---------------------+-----------+--------------------+------------------|
+   |yield                |in         |any                 |execution         |
+   |---------------------+-----------+--------------------+------------------|
+   |flush-icache         |in         |any                 |execution         |
+   |---------------------+-----------+--------------------+------------------|
+   |print-insn-summary!  |in         |any                 |tracing           |
+   |---------------------+-----------+--------------------+------------------|
+   |trace                |in         |any                 |tracing           |
+   |---------------------+-----------+--------------------+------------------|
+   |gprof-pc             |out        |integer             |profiling         |
+   |---------------------+-----------+--------------------+------------------|
+   |gprof-pc-hi          |out        |integer             |profiling         |
+   |---------------------+-----------+--------------------+------------------|
+   |sample-gprof         |out        |positive integer    |profiling         |
+   |---------------------+-----------+--------------------+------------------|
+   |nreset               |in         |0 or 1              |execution         |
+   |---------------------+-----------+--------------------+------------------|
+   |nm                   |out        |0 or 1              |register access   |
+   |---------------------+-----------+--------------------+------------------|
+   |tbit                 |out        |0 or 1              |register access   |
+   |---------------------+-----------+--------------------+------------------|
+   |nfiq                 |in         |0 or 1              |hardware          |
+   |                     |           |                    |interrupts        |
+   |---------------------+-----------+--------------------+------------------|
+   |nirq                 |in         |0 or 1              |hardware          |
+   |                     |           |                    |interrupts        |
+   +-------------------------------------------------------------------------+
 
    +-------------------------------------------------+
    |                      buses                      |
@@ -332,109 +333,108 @@ Component Reference:
    |              |           |          | access    |
    +-------------------------------------------------+
 
-+-------------------------------------------------------------------------------+
-|                                  attributes                                   |
-|-------------------------------------------------------------------------------|
-|        name         |category |     legal values     |default|   behaviors   ||
-|                     |         |                      | value |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|endian               |register |'1'/'big'/'2'/'little'|big    |initialization,||
-|                     |         |                      |       |register access||
-|---------------------+---------+----------------------+-------+---------------||
-|trace-extract?       |setting  |boolean               |false  |tracing        ||
-|---------------------+---------+----------------------+-------+---------------||
-|trace-filename       |setting  |string                |-      |tracing        ||
-|---------------------+---------+----------------------+-------+---------------||
-|trace-result?        |setting  |boolean               |false  |tracing        ||
-|---------------------+---------+----------------------+-------+---------------||
-|trace-counter?       |setting  |boolean               |false  |tracing        ||
-|---------------------+---------+----------------------+-------+---------------||
-|final-insn-count?    |setting  |boolean               |false  |tracing        ||
-|---------------------+---------+----------------------+-------+---------------||
-|engine-type          |setting  |scache or pbb         |pbb    |execution      ||
-|---------------------+---------+----------------------+-------+---------------||
-|insn-count           |watchable|number                |-      |execution      ||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|step-insn-count      |setting  |number                |1      |execution      ||
-|---------------------+---------+----------------------+-------+---------------||
-|enable-step-trap?    |setting  |boolean               |false  |execution      ||
-|---------------------+---------+----------------------+-------+---------------||
-|rN                   |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|pc                   |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|gdb-register-N       |debugger |byte array            |-      |register access||
-|---------------------+---------+----------------------+-------+---------------||
-|gdb-num-registers    |debugger |number                |-      |register access||
-|---------------------+---------+----------------------+-------+---------------||
-|gdb-exp-registers    |debugger |number list           |-      |register access||
-|---------------------+---------+----------------------+-------+---------------||
-|gdb-breakpoint-big   |debugger |byte array            |-      |register access||
-|---------------------+---------+----------------------+-------+---------------||
-|gdb-breakpoint-little|debugger |byte array            |-      |register access||
-|---------------------+---------+----------------------+-------+---------------||
-|state-snapshot       |-        |opaque string         |-      |state          ||
-|                     |         |                      |       |save/restore   ||
-|---------------------+---------+----------------------+-------+---------------||
-|step-cycles          |watchable|number                |-      |execution      ||
-|                     |pin      |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|trap                 |watchable|number                |-      |execution/traps||
-|                     |pin      |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|trap-code            |watchable|number                |-      |execution/traps||
-|                     |pin      |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|cpsr                 |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|cpsr-flags           |register |string                |-      |register access||
-|---------------------+---------+----------------------+-------+---------------||
-|nm                   |watchable|number                |-      |register access||
-|                     |pin      |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|tbit                 |watchable|number                |-      |register access||
-|                     |pin      |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|nfiq                 |watchable|number                |-      |hardware       ||
-|                     |pin      |                      |       |interrupts     ||
-|---------------------+---------+----------------------+-------+---------------||
-|nirq                 |watchable|number                |-      |hardware       ||
-|                     |pin      |                      |       |interrupts     ||
-|---------------------+---------+----------------------+-------+---------------||
-|rN_fiq               |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|rN_svc               |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|rN_abt               |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|rN_irq               |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|rN_und               |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|spsr_fiq             |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|spsr_svc             |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|spsr_abt             |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|spsr_irq             |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-|---------------------+---------+----------------------+-------+---------------||
-|spsr_und             |watchable|number                |-      |register access||
-|                     |register |                      |       |               ||
-+-------------------------------------------------------------------------------+
++-----------------------------------------------------------------------------------------+
+|                                       attributes                                        |
+|-----------------------------------------------------------------------------------------|
+|        name         |category |     legal values     |default|        behaviors        ||
+|                     |         |                      | value |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|endian               |register |'1'/'big'/'2'/'little'|big    |initialization, register ||
+|                     |         |                      |       |access                   ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|trace-extract?       |setting  |boolean               |false  |tracing                  ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|trace-filename       |setting  |string                |-      |tracing                  ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|trace-result?        |setting  |boolean               |false  |tracing                  ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|trace-counter?       |setting  |boolean               |false  |tracing                  ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|final-insn-count?    |setting  |boolean               |false  |tracing                  ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|engine-type          |setting  |scache or pbb         |pbb    |execution                ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|insn-count           |watchable|number                |-      |execution                ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|step-insn-count      |setting  |number                |1      |execution                ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|enable-step-trap?    |setting  |boolean               |false  |execution                ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|rN                   |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|pc                   |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|gdb-register-N       |debugger |byte array            |-      |register access          ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|gdb-num-registers    |debugger |number                |-      |register access          ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|gdb-exp-registers    |debugger |number list           |-      |register access          ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|gdb-breakpoint-big   |debugger |byte array            |-      |register access          ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|gdb-breakpoint-little|debugger |byte array            |-      |register access          ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|state-snapshot       |-        |opaque string         |-      |state save/restore       ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|step-cycles          |watchable|number                |-      |execution                ||
+|                     |pin      |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|trap                 |watchable|number                |-      |execution/traps          ||
+|                     |pin      |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|trap-code            |watchable|number                |-      |execution/traps          ||
+|                     |pin      |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|cpsr                 |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|cpsr-flags           |register |string                |-      |register access          ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|nm                   |watchable|number                |-      |register access          ||
+|                     |pin      |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|tbit                 |watchable|number                |-      |register access          ||
+|                     |pin      |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|nfiq                 |watchable|number                |-      |hardware interrupts      ||
+|                     |pin      |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|nirq                 |watchable|number                |-      |hardware interrupts      ||
+|                     |pin      |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|rN_fiq               |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|rN_svc               |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|rN_abt               |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|rN_irq               |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|rN_und               |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|spsr_fiq             |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|spsr_svc             |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|spsr_abt             |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|spsr_irq             |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
+|---------------------+---------+----------------------+-------+-------------------------||
+|spsr_und             |watchable|number                |-      |register access          ||
+|                     |register |                      |       |                         ||
++-----------------------------------------------------------------------------------------+
 
    +-------------------------------------------------+
    |                    accessors                    |