Here's a fascinating read about SHA implementation of Via Padlock: https://web.archive.org/web/20260123071403/http://www.logix....
Padlock hash engine can only hash the whole data, not a block of data (not init + update + update + ... + final), so the OpenSSL developer hacked up the MMU to prevent the CPU from accessing next regions and terminate the processing, emulating update() call :)