Lines Matching full:last
68 * - first - If `last' specified, this serves as start of general-purpose
72 * - last - If given, specifies inclusive upper-bound of GPR range.
101 .macro cfirestorelist first, last
102 .cfi_restore \last
103 .if \last-\first
104 cfirestorelist \first, \last-1
109 .macro cfisavelist first, last, index=1
110 .cfi_offset \last, -4*(\index)
111 .if \last-\first
112 cfisavelist \first, \last-1, \index+1
116 .macro _prologue first=-1, last=-1, push_ip=PAC_LEAF_PUSH_IP, push_lr=0
124 .if \last == -1
143 .if \last != \first
144 .if \last >= 13
150 push {r\first-r\last, ip, lr}
151 .cfi_adjust_cfa_offset ((\last-\first)+3)*4
154 cfisavelist \first, \last, 3
157 push {r\first-r\last, ip}
158 .cfi_adjust_cfa_offset ((\last-\first)+2)*4
160 cfisavelist \first, \last, 2
165 push {r\first-r\last, lr}
166 .cfi_adjust_cfa_offset ((\last-\first)+2)*4
168 cfisavelist \first, \last, 2
171 push {r\first-r\last}
172 .cfi_adjust_cfa_offset ((\last-\first)+1)*4
173 cfisavelist \first, \last, 1
176 .else // \last == \first
232 .macro _epilogue first=-1, last=-1, push_ip=PAC_LEAF_PUSH_IP, push_lr=0
240 .if \last == -1
245 .if \last != \first
246 .if \last >= 13
252 pop {r\first-r\last, ip, lr}
255 cfirestorelist \first, \last
258 pop {r\first-r\last, ip}
260 cfirestorelist \first, \last
265 pop {r\first-r\last, lr}
267 cfirestorelist \first, \last
270 pop {r\first-r\last}
271 cfirestorelist \first, \last
274 .else // \last == \first
327 /* Clean up expressions in 'last'. */
328 .macro _preprocess_reglist1 first:req, last:req, push_ip:req, push_lr:req, reglist_op:req
329 .if \last == 0
331 .elseif \last == 1
333 .elseif \last == 2
335 .elseif \last == 3
337 .elseif \last == 4
339 .elseif \last == 5
341 .elseif \last == 6
343 .elseif \last == 7
345 .elseif \last == 8
347 .elseif \last == 9
349 .elseif \last == 10
351 .elseif \last == 11
354 .error "last (\last) out of range"
359 .macro _preprocess_reglist first:req, last, push_ip=0, push_lr=0, reglist_op:req
360 .ifb \last
363 .if \first > \last
364 .error "last (\last) must be at least as great as first (\first)"
367 _preprocess_reglist1 0, \last, \push_ip, \push_lr, \reglist_op
369 _preprocess_reglist1 1, \last, \push_ip, \push_lr, \reglist_op
371 _preprocess_reglist1 2, \last, \push_ip, \push_lr, \reglist_op
373 _preprocess_reglist1 3, \last, \push_ip, \push_lr, \reglist_op
375 _preprocess_reglist1 4, \last, \push_ip, \push_lr, \reglist_op
377 _preprocess_reglist1 5, \last, \push_ip, \push_lr, \reglist_op
379 _preprocess_reglist1 6, \last, \push_ip, \push_lr, \reglist_op
381 _preprocess_reglist1 7, \last, \push_ip, \push_lr, \reglist_op
383 _preprocess_reglist1 8, \last, \push_ip, \push_lr, \reglist_op
385 _preprocess_reglist1 9, \last, \push_ip, \push_lr, \reglist_op
387 _preprocess_reglist1 10, \last, \push_ip, \push_lr, \reglist_op
389 _preprocess_reglist1 11, \last, \push_ip, \push_lr, \reglist_op
396 .macro _align8 first, last, push_ip=0, push_lr=0, reglist_op=_prologue
398 .ifnb \last
399 .error "can't have last (\last) without specifying first"
400 .else // \last not blank
402 \reglist_op first=-1, last=-1, push_ip=\push_ip, push_lr=\push_lr
408 .endif // .ifnb \last
411 .ifb \last
420 .ifeq (\last - \first + \push_ip + \push_lr) % 2
425 _preprocess_reglist \first-1, \last, \push_ip, \push_lr, \reglist_op
427 _preprocess_reglist \first \last, \push_ip, \push_lr, \reglist_op
432 .macro prologue first, last, push_ip=PAC_LEAF_PUSH_IP, push_lr=0, align8=STACK_ALIGN_ENFORCE
434 _align8 \first, \last, \push_ip, \push_lr, _prologue
436 _prologue first=\first, last=\last, push_ip=\push_ip, push_lr=\push_lr
440 .macro epilogue first, last, push_ip=PAC_LEAF_PUSH_IP, push_lr=0, align8=STACK_ALIGN_ENFORCE
442 _align8 \first, \last, \push_ip, \push_lr, reglist_op=_epilogue
444 _epilogue first=\first, last=\last, push_ip=\push_ip, push_lr=\push_lr