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