#!/bin/bash
# This script generates an assembly function that jumps over blocks of size
# determined by its first argument. Number of such blocks is determined
# by the second argument.
PAGE_SIZE=$(( $1 ))
TLB_ENTRY_CNT=$(( $2 ))
function instruction_block {
for (( c=0; c < PAGE_SIZE ; c++ )) ; do
echo ' "nop\n\t"'
done
}
echo 'void iTLB_bechmark_function() {'
echo ' __asm__ ('
for (( i=0; i < TLB_ENTRY_CNT; i++ )) ; do
echo ' "1:jmp 1f\n\t"'
instruction_block
done
echo ' "1:nop\n\t"'
echo ' );'
echo '}'