H A D | macro.h | 70 .macro switch_el, xreg, el3_label, el2_label, el1_label variable 71 mrs \xreg, CurrentEL variable 72 cmp \xreg, #0x8 variable 81 .macro branch_if_not_highest_el, xreg, label variable 82 switch_el \xreg, 3f, 2f, 1f variable 84 2: mrs \xreg, ID_AA64PFR0_EL1 variable 85 and \xreg, \xreg, #(ID_AA64PFR0_EL1_EL3) variable 86 cbnz \xreg, \label variable 89 1: mrs \xreg, ID_AA64PFR0_EL variable 90 and \\xreg, \\xreg, #(ID_AA64PFR0_EL1_EL3 | ID_AA64PFR0_EL1_EL2) variable 91 cbnz \\xreg, \\label variable 99 .macro branch_if_a57_core, xreg, a57_label variable 100 mrs \\xreg, midr_el1 variable 101 lsr \\xreg, \\xreg, #4 variable 102 and \\xreg, \\xreg, #0x00000FFF variable 103 cmp \\xreg, #0xD07 /* Cortex-A57 MPCore processor. */ variable 110 .macro branch_if_a53_core, xreg, a53_label variable 111 mrs \\xreg, midr_el1 variable 112 lsr \\xreg, \\xreg, #4 variable 113 and \\xreg, \\xreg, #0x00000FFF variable 114 cmp \\xreg, #0xD03 /* Cortex-A53 MPCore processor. */ variable 122 .macro branch_if_slave, xreg, slave_label variable 124 mrs \\xreg, mpidr_el1 variable 125 and \\xreg, \\xreg, 0xffffffffff /* clear bits [63:40] */ variable 126 and \\xreg, \\xreg, ~0x00ff000000 /* also clear bits [31:24] */ variable 127 cbnz \\xreg, \\slave_label variable 135 .macro branch_if_master, xreg, master_label variable 137 mrs \\xreg, mpidr_el1 variable 138 and \\xreg, \\xreg, 0xffffffffff /* clear bits [63:40] */ variable 139 and \\xreg, \\xreg, ~0x00ff000000 /* also clear bits [31:24] */ variable 140 cbz \\xreg, \\master_label variable [all...] |