1 1.2 cherry /* $NetBSD: h_initfini_align.S,v 1.2 2014/03/16 09:27:04 cherry Exp $ */ 2 1.1 cherry 3 1.1 cherry #include <machine/asm.h> 4 1.1 cherry 5 1.2 cherry RCSID("$NetBSD: h_initfini_align.S,v 1.2 2014/03/16 09:27:04 cherry Exp $") 6 1.1 cherry 7 1.1 cherry ENTRY(check_stack_alignment, 0) 8 1.1 cherry .prologue 9 1.1 cherry .regstk 0, 2, 0, 0 10 1.1 cherry 11 1.1 cherry alloc loc0 = ar.pfs, 0, 2, 0, 0 12 1.1 cherry 13 1.1 cherry .body 14 1.1 cherry mov ret0 = 1 15 1.1 cherry ;; 16 1.1 cherry 17 1.2 cherry /* ar.bsp has an 8-byte alignment requirement */ 18 1.1 cherry mov loc1 = ar.bsp 19 1.1 cherry ;; 20 1.1 cherry 21 1.1 cherry and loc1 = 7, loc1 22 1.1 cherry ;; 23 1.1 cherry 24 1.1 cherry cmp.eq p1, p0 = 0, loc1 25 1.1 cherry (p0) mov ret0 = 0 26 1.1 cherry ;; 27 1.1 cherry 28 1.1 cherry /* sp has a 16-byte alignment requirement */ 29 1.1 cherry (p1) mov loc1 = sp 30 1.1 cherry ;; 31 1.1 cherry (p1) and loc1 = 15, loc1 32 1.1 cherry ;; 33 1.1 cherry 34 1.1 cherry (p1) cmp.eq p1, p0 = 0, loc1 35 1.1 cherry (p0) mov ret0 = 0 36 1.1 cherry 37 1.1 cherry br.ret.sptk.few rp 38