1*e4624435SJonathan Corbet#!/bin/sh
2*e4624435SJonathan Corbet
3*e4624435SJonathan Corbet# Print out the KASAN_SHADOW_OFFSETS required to place the KASAN SHADOW
4*e4624435SJonathan Corbet# start address at the top of the linear region
5*e4624435SJonathan Corbet
6*e4624435SJonathan Corbetprint_kasan_offset () {
7*e4624435SJonathan Corbet	printf "%02d\t" $1
8*e4624435SJonathan Corbet	printf "0x%08x00000000\n" $(( (0xffffffff & (-1 << ($1 - 1 - 32))) \
9*e4624435SJonathan Corbet			- (1 << (64 - 32 - $2)) ))
10*e4624435SJonathan Corbet}
11*e4624435SJonathan Corbet
12*e4624435SJonathan Corbetecho KASAN_SHADOW_SCALE_SHIFT = 3
13*e4624435SJonathan Corbetprintf "VABITS\tKASAN_SHADOW_OFFSET\n"
14*e4624435SJonathan Corbetprint_kasan_offset 48 3
15*e4624435SJonathan Corbetprint_kasan_offset 47 3
16*e4624435SJonathan Corbetprint_kasan_offset 42 3
17*e4624435SJonathan Corbetprint_kasan_offset 39 3
18*e4624435SJonathan Corbetprint_kasan_offset 36 3
19*e4624435SJonathan Corbetecho
20*e4624435SJonathan Corbetecho KASAN_SHADOW_SCALE_SHIFT = 4
21*e4624435SJonathan Corbetprintf "VABITS\tKASAN_SHADOW_OFFSET\n"
22*e4624435SJonathan Corbetprint_kasan_offset 48 4
23*e4624435SJonathan Corbetprint_kasan_offset 47 4
24*e4624435SJonathan Corbetprint_kasan_offset 42 4
25*e4624435SJonathan Corbetprint_kasan_offset 39 4
26*e4624435SJonathan Corbetprint_kasan_offset 36 4
27