; ARM CPU simulator support.  -*- Scheme -*-
; Copyright (C) 2000 Red Hat, Inc.
; This file is part of CGEN.
; See file COPYING.CGEN for details.

; N.B.
; - The format of this file is *extremely* wip!
; - This isn't intended to be simulator independent, it is an application
;   specific file and not all simulator apps are equivalent.
; - This file is loaded after all the .cpu files are loaded.

; ??? The application (e.g. simulator) may wish to do further processing when
; the tbit is set.  For a C++ simulator what one would want to do is override
; the "set" method.  That presumes there's a "set" method to override and
; that all affected code uses it.  There are several to accomplish this.
; The first way to accomplish this is to have all code always
; access hardware elements through their get/set methods.  Perhaps ok,
; but also maybe overkill.  The second is to specify those that use get/set
; methods.  One could do this for elements that have get/set specs, but this
; requires the .cpu file to get it right (and to change when it isn't).
; A variant of the second is to move this info to an application specific
; file (much like what .opc files are although even they have the problem of
; requiring collaboration with the .cpu file. -- to be fixed!).
; The solution taken here is the latter.

; The h-tbit and h-mbits registers need extra processing when they are set.
; This is done by specifying the FUN-SET attribute, which causes all machine
; generated references to go through the `set' access method.
; Oh no, not FUN-ACCESS again! :-)

(modify-hardware
 (name h-tbit)
 (add-attrs FUN-SET)
)

(modify-hardware
 (name h-mbits)
 (add-attrs FUN-SET)
)
