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