Coreinfo CPU Exceptions
=======================


Copyright (C) 2019, 2021, 2022  Kai Mertens <kmx@posteo.net>  

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
copy of the license is included in the section entitled "GNU Free
Documentation License".


When invoking the Coreinfo Secondary Payload fromout the GRUB2.02 Boot
Menu, the system will freeze occasionally on ZC-X60, ZC-X200 and
ZC-X200t machines.

TODO: Hmm, these freezes still occur with a present
`cpu_microcode_blob.bin´ in CBFS?


Invalid Opcode Exception
------------------------


![X200t Coreinfo Crashdump – Invalid Opcode Exception][!DSCN8664.jpg]

* <https://en.wikipedia.org/wiki/Illegal_opcode>

    Invalid Opcode

    The Invalid Opcode exception occurs when the processor tries to
    execute an invalid or undefined opcode, or an instruction with
    invalid prefixes. It also occurs when an instruction exceeds 15
    bytes, but this only occurs with redundant prefixes.

    The saved instruction pointer points to the instruction which
    caused the exception.

    “In spite of this manufacturer guarantee against such instructions,
    research has uncovered a vast number of undocumented instructions
    in modern x86 processors.[1] Some of these instructions are shared
    across processor manufacturers, indicating that Intel and AMD are
    both aware of the instruction and its purpose, despite it not
    appearing in any official specification.”

* <https://wiki.osdev.org/Exceptions>

* <https://forums.anandtech.com/threads/how-does-a-processor-handle-invalid-opcodes.2450723/>


Bound Range Exception
---------------------


![X200t Coreinfo Crashdump – Bound Range Exception][!DSCN8661.jpg]

* <https://wiki.osdev.org/Exceptions>

    Bound Range Exceeded

    This exception can occur when the BOUND instruction is executed.
    The BOUND instruction compares an array index with the lower and
    upper bounds of an array. When the index is out of bounds, the
    Bound Range Exceeded exception occurs.

    The saved instruction pointer points to the BOUND instruction which
    caused the exception.



[!DSCN8661.jpg]:      ../images/DSCN8661.jpg
[!DSCN8664.jpg]:      ../images/DSCN8664.jpg
