CPC G06F 21/52 (2013.01) [G06F 3/0622 (2013.01); G06F 3/0637 (2013.01); G06F 3/0673 (2013.01); G06F 9/30101 (2013.01); G06F 9/30134 (2013.01); G06F 9/461 (2013.01); G06F 12/1491 (2013.01); G06F 2212/1052 (2013.01); G06F 2221/033 (2013.01); G06F 2221/2141 (2013.01)] | 25 Claims |
1. A processor comprising:
a first register corresponding to a first privilege level, the first register to store a first shadow stack pointer (SSP), the first SSP to identify a first shadow stack to be used by the processor at the first privilege level;
a second register corresponding to a second privilege level different than the first privilege level, the second register to store a second SSP, the second SSP to identify a second shadow stack to be used by the processor at the second privilege level;
decoder circuitry to decode a first instruction and a second instruction; and
an execution circuitry to:
execute the first instruction at the first privilege level to perform operations corresponding to the first instruction, including to:
receive the first SSP from the first register;
identify the first shadow stack using the first SSP; and
store a return address on the first shadow stack; and
execute the second instruction at the first privilege level to perform operations corresponding to the second instruction, including to:
receive the first SSP from the first register;
identify the first shadow stack using the first SSP;
receive the return address from the first shadow stack; and
ensure that a return is made to a return address matching the return address received from the first shadow stack.
|