PR_SHADOW_STACK_ENABLE
(PR_SHADOW_STACK_ENABLE | PR_SHADOW_STACK_WRITE | PR_SHADOW_STACK_PUSH)
return task->thread.gcs_el0_mode & PR_SHADOW_STACK_ENABLE;
if (!(current->thread.gcs_el0_mode & PR_SHADOW_STACK_ENABLE))
(enabled & PR_SHADOW_STACK_ENABLE))
if (!(enabled & PR_SHADOW_STACK_ENABLE))
if (task->thread.gcs_el0_mode & PR_SHADOW_STACK_ENABLE)
if (arg & PR_SHADOW_STACK_ENABLE &&
#define PR_SHADOW_STACK_SUPPORTED_STATUS_MASK (PR_SHADOW_STACK_ENABLE)
bcfi_status |= (is_shstk_enabled(t) ? PR_SHADOW_STACK_ENABLE : 0);
enable_shstk = status & PR_SHADOW_STACK_ENABLE;
mov x1, PR_SHADOW_STACK_ENABLE
ret = gcs_set_status(PR_SHADOW_STACK_ENABLE | PR_SHADOW_STACK_WRITE);
ret = gcs_set_status(PR_SHADOW_STACK_ENABLE);
ret = gcs_set_status(PR_SHADOW_STACK_ENABLE | PR_SHADOW_STACK_PUSH);
ret = gcs_set_status(PR_SHADOW_STACK_ENABLE);
ret = gcs_set_status(PR_SHADOW_STACK_ENABLE | PR_SHADOW_STACK_PUSH |
ret = gcs_set_status(PR_SHADOW_STACK_ENABLE);
if (ret == 0 && !(child_mode & PR_SHADOW_STACK_ENABLE)) {
bool enabling = mode & PR_SHADOW_STACK_ENABLE;
if (ret == 0 && !(child_mode & PR_SHADOW_STACK_ENABLE)) {
if (!(gcs_mode & PR_SHADOW_STACK_ENABLE)) {
gcs_mode = PR_SHADOW_STACK_ENABLE;
return state & PR_SHADOW_STACK_ENABLE;
ret = gcs_set_status(PR_SHADOW_STACK_ENABLE);
if (mode & PR_SHADOW_STACK_ENABLE) {
.mode = PR_SHADOW_STACK_ENABLE,
.mode = PR_SHADOW_STACK_ENABLE | PR_SHADOW_STACK_WRITE,
.mode = PR_SHADOW_STACK_ENABLE | PR_SHADOW_STACK_PUSH,
.mode = PR_SHADOW_STACK_ENABLE | PR_SHADOW_STACK_WRITE |
PR_SHADOW_STACK_ENABLE | PR_SHADOW_STACK_WRITE | PR_SHADOW_STACK_PUSH
if (!(child_gcs.features_enabled & PR_SHADOW_STACK_ENABLE)) {
PR_SHADOW_STACK_ENABLE);
if (!(gcs_mode & PR_SHADOW_STACK_ENABLE)) {
gcs_mode = PR_SHADOW_STACK_ENABLE;
if (!(mode & PR_SHADOW_STACK_ENABLE)) {
gcs_set_state(PR_SHADOW_STACK_ENABLE);
if (!(ss_status & PR_SHADOW_STACK_ENABLE))
if (!(ss_status & PR_SHADOW_STACK_ENABLE))
if (!(ss_status & PR_SHADOW_STACK_ENABLE))