Subject: irq handling patch
To: None <port-arm32@netbsd.org>
From: Chris Gilbert <chris@paradox.demon.co.uk>
List: port-arm32
Date: 04/01/2001 15:48:48
--------------Boundary-00=_CTB411E9615VJH69K5SN
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Hi,

I've been looking over the irq handling code with a view to speeding it up 
(although measuring performance isn't very easy)  Anyway I've tweaked the 
code, got rid of the excessive looping when looking at the irq request field 
and which bit's are set (it checked every bit) and replaced it with ffs like 
code.  I've also shifted the ldr's around to try and get rid of load delays 
causing pipeline stalls.

I've attached the patch.  If people could take a look and check I've not done 
anything really daft (it runs, I'm currently doing a make build with it in 
place :) (or if there's anything else I can do :)  If it looks ok I'll commit 
it.

Does anyone know a good way to test the irq handling speed?

Cheers,
Chris

--------------Boundary-00=_CTB411E9615VJH69K5SN
Content-Type: text/x-assembler;
  charset="iso-8859-1";
  name="irq.diff"
Content-Transfer-Encoding: base64
Content-Description: irq handling speedup diff
Content-Disposition: attachment; filename="irq.diff"

SW5kZXg6IGlvbWQvaW9tZF9pcnEuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zeXNz
cmMvc3lzL2FyY2gvYXJtMzIvaW9tZC9pb21kX2lycS5TLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjIyCmRpZmYgLWMgLXAgLXIxLjIyIGlvbWRfaXJxLlMKKioqIGlvbWQvaW9tZF9pcnEuUwkyMDAx
LzAyLzI1IDIzOjU5OjQ4CTEuMjIKLS0tIGlvbWQvaW9tZF9pcnEuUwkyMDAxLzA0LzAxIDE0OjIx
OjE0CioqKioqKioqKioqKioqKgoqKiogNTAsNTUgKioqKgotLS0gNTAsNjggLS0tLQogIAogIAku
dGV4dAogIAkuYWxpZ24JMAorIC8qIGZmcyB0YWJsZSB1c2VkIGZvciBzZXJ2aWNpbmcgaXJxJ3Mg
cXVpY2tseSBtdXN0IGJlIGhlcmUgb3RoZXJ3aXNlIGFkciBjYW4ndCByZWFjaCBpdCAqLworIC50
eXBlIExpcnFfZmZzX3RhYmxlLCBfQVNNX1RZUEVfT0JKRUNUOworIExpcnFfZmZzX3RhYmxlOgor
IC8qIHNhbWUgYXMgZmZzIHRhYmxlIGJ1dCBhbGwgbnVtcyBhcmUgLTEgZnJvbSB0aGF0ICovCisg
LyogICAgICAgICAgICAgICAwICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICAgNyAgICAgICAgICAg
Ki8KKyAJLmJ5dGUJIDAsICAwLCAgMSwgMTIsICAyLCAgNiwgIDAsIDEzICAvKiAgMC0gNyAqLwor
IAkuYnl0ZQkgMywgIDAsICA3LCAgMCwgIDAsICAwLCAgMCwgMTQgIC8qICA4LTE1ICovCisgCS5i
eXRlCTEwLCAgNCwgIDAsICAwLCAgOCwgIDAsICAwLCAyNSAgLyogMTYtMjMgKi8KKyAJLmJ5dGUJ
IDAsICAwLCAgMCwgIDAsICAwLCAyMSwgMjcsIDE1ICAvKiAyNC0zMSAqLworIAkuYnl0ZQkzMSwg
MTEsICA1LCAgMCwgIDAsICAwLCAgMCwgIDAJLyogMzItMzkgKi8KKyAJLmJ5dGUJIDksICAwLCAg
MCwgMjQsICAwLCAgMCwgMjAsIDI2ICAvKiA0MC00NyAqLworIAkuYnl0ZQkzMCwgIDAsICAwLCAg
MCwgIDAsIDIzLCAgMCwgMTkgIC8qIDQ4LTU1ICovCisgCS5ieXRlICAgMjksICAwLCAyMiwgMTgs
IDI4LCAxNywgMTYsICAwICAvKiA1Ni02MyAqLwogIAogIC8qCiAgICoKKioqKioqKioqKioqKioq
IExzcGxfbWFza3M6CioqKiA4Miw5MiAqKioqCi0tLSA5NSwxMDcgLS0tLQogIC8qCiAgICogUmVn
aXN0ZXIgdXNhZ2UKICAgKgorICAqICByNSAgLSB0ZW1wIGZvciBmZnMgc3R1ZmYKICAgKiAgcjYg
IC0gQWRkcmVzcyBvZiBjdXJyZW50IGhhbmRsZXIKICAgKiAgcjcgIC0gUG9pbnRlciB0byBoYW5k
bGVyIHBvaW50ZXIgbGlzdAogICAqICByOCAgLSBDdXJyZW50IElSUSByZXF1ZXN0cy4KICAgKiAg
cjkgIC0gVXNlZCB0byBjb3VudCB0aHJvdWdoIHBvc3NpYmxlIElSUSBiaXRzLgogICAqICByMTAg
LSBCYXNlIGFkZHJlc3Mgb2YgSU9NRAorICAqICByMTEgLSB1c2VkIGFzIHdvcmtpbmcgaXJxIHJl
cXVlc3QgZm9yIGZmcyByb3V0aW5lCiAgICovCiAgCiAgTGlvbWRfYmFzZToKKioqKioqKioqKioq
KioqIExmaW5kX2hpZ2hlc3RfaXBsOgoqKiogMTgxLDI1MyAqKioqCiAgCW1zcgljcHNyX2FsbCwg
cjAKICAKICAJbGRyCXI3LCBbcGMsICNMaXJxaGFuZGxlcnMgLSAuIC0gOF0KISAgICAgICAgIG1v
dglyOSwgIzB4MDAwMDAwMDEKICAKICBpcnFsb29wOgohIAkvKiBUaGlzIHdvdWxkIGJlbmVmaXQg
ZnJvbSBhIHNwZWNpYWwgZmZzIHR5cGUgcm91dGluZSAqLwohIAl0c3QJcjgsIHI5CQkJLyogSXMg
YSBiaXQgc2V0ID8gKi8KISAJYmVxCW5leHRpcnEJCQkvKiBObyA/IHRyeSBuZXh0IGJpdCAqLwog
IAohIAlsZHIJcjYsIFtyN10JCS8qIEdldCBhZGRyZXNzIG9mIGZpcnN0IGhhbmRsZXIgc3RydWN0
dXJlICovCiAgCiAgCXRlcQlyNiwgIzB4MDAwMDAwMDAJCS8qIERvIHdlIGhhdmUgYSBoYW5kbGVy
ICovCiAgCW1vdmVxCXIwLCByOAkJCS8qIElSUSByZXF1ZXN0cyBhcyBhcmcgMCAqLwogIAliZXEJ
X0NfTEFCRUwoc3RyYXlfaXJxaGFuZGxlcikgLyogY2FsbCBzcGVjaWFsIGhhbmRsZXIgKi8KISAK
ISAgICAgICAgIGxkcglyMCwgTGNudAkJLyogU3RhdCBpbmZvICovCiEgCWxkcglyMSwgW3IwLCAj
KFZfSU5UUildCiAgCWFkZAlyMSwgcjEsICMweDAwMDAwMDAxCiEgCXN0cglyMSwgW3IwLCAjKFZf
SU5UUildCiEgCiEgCS8qCiEgCSAqIFhYWDogU2hvdWxkIHN0YXRzIGJlIGFjY3VtbGF0ZWQgZm9y
IGV2ZXJ5IGludGVycnVwdCByb3V0aW5lCiEgCSAqIGNhbGxlZCBvciBmb3IgZXZlcnkgcGh5c2lj
YWwgaW50ZXJydXB0IHRoYXQgaXMgc2VydmljZWQuCiEgCSAqLwogIAogICNpZmRlZiBJUlFTVEFU
UwohIAlsZHIJcjAsIExpbnRyY250CiEgCWxkcglyMSwgW3I2LCAjKElIX05VTSldCiEgCiEgCWFk
ZAlyMCwgcjAsIHIxLCBsc2wgIzIKISAJbGRyCXIxLCBbcjBdCiEgCWFkZAlyMSwgcjEsICMweDAw
MDAwMDAxCiEgCXN0cglyMSwgW3IwXQogICNlbmRpZgkvKiBJUlFTVEFUUyAqLwogIAogIGlycWNo
YWlubG9vcDoKLSAJYWRkCWxyLCBwYywgI25leHRpbmNoYWluIC0gLiAtIDgJLyogcmV0dXJuIGFk
ZHJlc3MgKi8KICAJbGRyCXIwLCBbcjYsICMoSUhfQVJHKV0JLyogR2V0IGFyZ3VtZW50IHBvaW50
ZXIgKi8KICAJdGVxCXIwLCAjMHgwMDAwMDAwMAkJLyogSWYgYXJnIGlzIHplcm8gcGFzcyBzdGFj
ayBmcmFtZSAqLwogIAlhZGRlcQlyMCwgc3AsICM4CQkvKiAuLi4gc3RhY2sgZnJhbWUgW1hYWCBu
ZWVkcyBjYXJlXSAqLwogIAlsZHIJcGMsIFtyNiwgIyhJSF9GVU5DKV0JLyogQ2FsbCBoYW5kbGVy
ICovCiAgCiAgbmV4dGluY2hhaW46CiAgCXRlcQlyMCwgIzB4MDAwMDAwMDEJCS8qIFdhcyB0aGUg
aXJxIHNlcnZpY2VkID8gKi8KISAJYmVxCWlycWRvbmUKISAKISAJbGRyCXI2LCBbcjYsICMoSUhf
TkVYVCldCiEgCXRlcQlyNiwgIzB4MDAwMDAwMDAKICAJYm5lCWlycWNoYWlubG9vcAogIAogIGly
cWRvbmU6CiAgbmV4dGlycToKISAJYWRkCXI3LCByNywgIzB4MDAwMDAwMDQJLyogdXBkYXRlIHBv
aW50ZXIgdG8gaGFuZGxlcnMgKi8KISAJbW92CXI5LCByOSwgbHNsICMxCQkvKiBtb3ZlIG9uIHRv
IG5leHQgYml0ICovCiEgI2lmZGVmIENQVV9BUk03NTAwCiEgCXRlcQlyOSwgIzAJCQkvKiBkb25l
IHRoZSBsYXN0IGJpdCA/ICovCiEgI2Vsc2UKISAJdGVxCXI5LCAjKDEgPDwgMjQpCQkvKiBkb25l
IHRoZSBsYXN0IGJpdCA/ICovCiEgI2VuZGlmCS8qIENQVV9BUk03NTAwICovCiEgCWJuZQlpcnFs
b29wCQkJLyogbm8gLSBsb29wIGJhY2suICovCiEgCiEgCWxkbWZkCXNwISwge3IyfQohIAlsZHIJ
cjEsIExjdXJyZW50X3NwbF9sZXZlbAohIAlzdHIJcjIsIFtyMV0KICAKISAJLyogUmVzdG9yZSBw
cmV2aW91cyBkaXNhYmxlZCBtYXNrICovCiEgCWxkbWZkCXNwISwge3IyfQogIAlsZHIJcjEsIExk
aXNhYmxlZF9tYXNrCiEgCXN0cglyMiwgW3IxXQogIAlibAlfQ19MQUJFTChpcnFfc2V0bWFza3Mp
CiAgCiAgCWJsCV9DX0xBQkVMKGRvc29mdGludHMpCS8qIEhhbmRsZSB0aGUgc29mdCBpbnRlcnJ1
cHRzICovCi0tLSAxOTYsMzE0IC0tLS0KICAJbXNyCWNwc3JfYWxsLCByMAogIAogIAlsZHIJcjcs
IFtwYywgI0xpcnFoYW5kbGVycyAtIC4gLSA4XQohIAkvKiAKISAJICogdGFrZSBhIGNvcHkgb2Yg
dGhlIElSUSByZXF1ZXN0IHNvIHRoYXQgd2UgY2FuIHN0cmlwIGJpdHMgb3V0IG9mIGl0CiEgCSAq
IG5vdGUgdGhhdCB3ZSBvbmx5IHVzZSAyNCBiaXRzIHdpdGggaW9tZDIgY2hpcHMKISAJICovCiEg
I2lmZGVmICBDUFVfQVJNNzUwMAohIAltb3YJcjExLCByOAohICNlbHNlCiEgCWJpYwlyMTEsIHI4
LCAjMHhmZjAwMDAwMAohICNlbmRpZgohIAkvKiBmZnMgcm91dGluZSB0byBmaW5kIGZpcnN0IGly
cSB0byBzZXJ2aWNlICovCiEgCS8qIHN0YW5kYXJkIHRyaWNrIHRvIGlzb2xhdGUgYm90dG9tIGJp
dCBpbiBhMCBvciAwIGlmIGEwID0gMCBvbiBlbnRyeSAqLwohIAlyc2IJcjQsIHIxMSwgIzAKISAJ
YW5kcwlyOSwgcjExLCByNAohIAohIAkvKiAKISAJICogbm93IHI5IGhhcyBhdCBtb3N0IDEgc2V0
IGJpdCwgY2FsbCB0aGlzIFgKISAJICogaWYgWCA9IDAsIGJyYW5jaCB0byBleGl0IGNvZGUKISAJ
ICovCiEgCWJlcQlleGl0aXJxCiEgCWFkcglyNSwgTGlycV9mZnNfdGFibGUKISAKISAJLyogb3Ro
ZXJ3aXNlIGZpbmQgdGhlIHNldCBiaXQgKi8KISAJb3JyCXI5LCByOSwgcjksIGxzbCAjNAkvKiBY
ICogMHgxMSAqLwohIAlvcnIJcjksIHI5LCByOSwgbHNsICM2CS8qIFggKiAweDQ1MSAqLwohIAly
c2IJcjksIHI5LCByOSwgbHNsICMxNgkvKiBYICogMHgwNDUwZmJhZiAqLwohIAkvKiBmZXRjaCB0
aGUgYml0IG51bWJlciAqLwohIAlsZHJiCXI5LCBbcjUsIHI5LCBsc3IgIzI2IF0KICAKICBpcnFs
b29wOgohIAkvKiBhdCB0aGlzIHBvaW50OgohIAkgKglyOSA9IGlycSBudW1iZXIgLTEKISAJICoJ
cjExID0gcjggd2l0aCB0aGUgY3VycmVudCBpcnEgYml0IG5lZWRpbmcgdG8gYmUgdW5zZXQKISAJ
ICovCiEgCS8qIGFwb2xvZ2llcyBmb3IgdGhlIGRvZ3MgZGlubmVyIG9mIGNvZGUgaGVyZSwgYnV0
IGl0J3MgaW4gYW4gYXR0ZW1wdAohIAkgKiB0byBtaW5pbWlzZSBzdGFsbGluZywgaGVuY2UgbG90
cyBvZiB0aGluZ3MgaGFwcGVuIGhlcmU6CiEgCSAqCS0gZ2V0dGluZyBhZGRyZXNzIG9mIGhhbmRs
ZXIsIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgd2UgY2FsbCBzdHJheV9pcnFoYW5kbGVyCiEgCSAqCSAg
dGhpcyBpcyBhc3N1bWVkIHRvIGJlIHJhcmUgc28gd2UgZG9uJ3QgY2FyZSBhYm91dCBwZXJmb3Jt
YW5jZSBmb3IgaXQKISAJICoJLSBzdGF0aW5mbyBpcyB1cGRhdGVkCiEgCSAqCS0gdW5zZXR0aW5n
IG9mIHRoZSBpcnEgYml0IGluIHIxMgohIAkgKgktIGlycSBzdGF0cyAoaWYgZW5hYmxlZCkgYWxz
byBnZXQgcHV0IGluIHRoZSBtaXgKISAJICovCiEgCWxkcglyNiwgW3I3LCByOSwgbHNsICMyXQkv
KiBHZXQgYWRkcmVzcyBvZiBmaXJzdCBoYW5kbGVyIHN0cnVjdHVyZSAqLwohICAgICAgICAgbGRy
CXI0LCBMY250CQkvKiBTdGF0IGluZm8gQSAqLwogIAohIAltb3YJcjAsICMxCQkJLyogZm9yIHVu
c2V0dGluZyBpcnEgYml0ICovCiAgCiAgCXRlcQlyNiwgIzB4MDAwMDAwMDAJCS8qIERvIHdlIGhh
dmUgYSBoYW5kbGVyICovCiAgCW1vdmVxCXIwLCByOAkJCS8qIElSUSByZXF1ZXN0cyBhcyBhcmcg
MCAqLworIAkKKyAjaWZkZWYgSVJRU1RBVFMKKyAJbGRybmUJcjIsIExpbnRyY250CisgCWxkcm5l
CXIzLCBbcjYsICMoSUhfTlVNKV0KKyAjZW5kaWYKKyAJbGRybmUJcjEsIFtyNCwgIyhWX0lOVFIp
XQkvKiBTdGF0IGluZm8gQiAqLworIAliaWNuZQlyMTEsIHIxMSwgcjAsIGxzbCByOQkvKiBjbGVh
ciB0aGUgSVJRIGJpdCAqLworIAkKICAJYmVxCV9DX0xBQkVMKHN0cmF5X2lycWhhbmRsZXIpIC8q
IGNhbGwgc3BlY2lhbCBoYW5kbGVyICovCiEgI2lmZGVmIElSUVNUQVRTCiEgCWFkZAlyMiwgcjIs
IHIzLCBsc2wgIzIKISAJbGRyCXIzLCBbcjJdCiEgI2VuZGlmCiEgCS8qIHN0YXQgaW5mbyBDICov
CiAgCWFkZAlyMSwgcjEsICMweDAwMDAwMDAxCiEgCXN0cglyMSwgW3I0LCAjKFZfSU5UUildCiAg
CiAgI2lmZGVmIElSUVNUQVRTCiEgCWFkZAlyMywgcjMsICMweDAwMDAwMDAxCiEgCXN0cglyMywg
W3IyXQogICNlbmRpZgkvKiBJUlFTVEFUUyAqLwogIAogIGlycWNoYWlubG9vcDoKICAJbGRyCXIw
LCBbcjYsICMoSUhfQVJHKV0JLyogR2V0IGFyZ3VtZW50IHBvaW50ZXIgKi8KKyAJYWRkCWxyLCBw
YywgI25leHRpbmNoYWluIC0gLiAtIDgJLyogcmV0dXJuIGFkZHJlc3MgKi8KICAJdGVxCXIwLCAj
MHgwMDAwMDAwMAkJLyogSWYgYXJnIGlzIHplcm8gcGFzcyBzdGFjayBmcmFtZSAqLwogIAlhZGRl
cQlyMCwgc3AsICM4CQkvKiAuLi4gc3RhY2sgZnJhbWUgW1hYWCBuZWVkcyBjYXJlXSAqLwogIAls
ZHIJcGMsIFtyNiwgIyhJSF9GVU5DKV0JLyogQ2FsbCBoYW5kbGVyICovCiAgCiAgbmV4dGluY2hh
aW46CisgCWxkcglyNiwgW3I2LCAjKElIX05FWFQpXQkvKiBmZXRjaCBuZXh0IGhhbmRsZXIgKi8K
KyAJCiAgCXRlcQlyMCwgIzB4MDAwMDAwMDEJCS8qIFdhcyB0aGUgaXJxIHNlcnZpY2VkID8gKi8K
ISAJCiEgCS8qIGlmIGl0IHdhcyBpdCdsbCBqdXN0IGZhbGwgdGhyb3VnaCB0aGlzOiAqLwohIAl0
ZXFuZQlyNiwgIzB4MDAwMDAwMDAKICAJYm5lCWlycWNoYWlubG9vcAogIAogIGlycWRvbmU6CiAg
bmV4dGlycToKISAJLyogaHVudCBmb3IgdGhlIG5leHQgaXJxLCB1c2luZyBmZnMgcm91dGluZSAq
LwohIAlyc2IJcjQsIHIxMSwgIzAKISAJYW5kcwlyOSwgcjExLCByNAohIAkvKiBpZiByOSA9IDAg
d2UgYnJhY2ggb3V0CiEgCSAqICh0YWtpbmcgdGhlIGJyYW5jaCBpcyBsZXNzIGN5Y2xlcyB0aGFu
IHRoZSBjb25kaXRpb25hbAohIAkgKiBleGVjdXRpb24pCiEgCSAqLwohIAliZXEJZXhpdGlycQog
IAohIAlvcnJuZQlyOSwgcjksIHI5LCBsc2wgIzQJLyogWCAqIDB4MTEgKi8KISAJb3JybmUJcjks
IHI5LCByOSwgbHNsICM2CS8qIFggKiAweDQ1MSAqLwohIAlyc2JuZQlyOSwgcjksIHI5LCBsc2wg
IzE2CS8qIFggKiAweDA0NTBmYmFmICovCiEgCS8qIGZldGNoIHRoZSBiaXQgbnVtYmVyICovCiEg
CWxkcm5lYglyOSwgW3I1LCByOSwgbHNyICMyNiBdCiEgCiEgCS8qIGFuZCBsb29wIGJhY2sgKi8K
ISAJYm5lIAlpcnFsb29wCiEgCiEgZXhpdGlycToKISAJbGRtZmQJc3AhLCB7cjIsIHIzfQohIAls
ZHIJcjksIExjdXJyZW50X3NwbF9sZXZlbAogIAlsZHIJcjEsIExkaXNhYmxlZF9tYXNrCiEgCXN0
cglyMiwgW3I5XQohIAlzdHIJcjMsIFtyMV0KISAKICAJYmwJX0NfTEFCRUwoaXJxX3NldG1hc2tz
KQogIAogIAlibAlfQ19MQUJFTChkb3NvZnRpbnRzKQkvKiBIYW5kbGUgdGhlIHNvZnQgaW50ZXJy
dXB0cyAqLwoqKioqKioqKioqKioqKiogX0NfTEFCRUwoaW50cmNudCk6CioqKiA0NzgsNDgzICoq
KioKLS0tIDUzOSw1NDYgLS0tLQogIAkubG9uZwkwCiAgX0NfTEFCRUwoZWludHJjbnQpOgogICNl
bmRpZgkvKiBJUlFTVEFUUyAqLworIAorIAogIAogIC8qIEZJUSBjb2RlICovCiAgCg==

--------------Boundary-00=_CTB411E9615VJH69K5SN--