blob: e04541914b1ad8d3d572fe28d567915025ef9a48 [file] [log] [blame]
#include "../timing.h"
#include "callee.h"
#include <compartment.h>
#include <locks.hh>
void __cheri_compartment("caller") run()
{
printf("#board\tstack_use\tcall\treturn\n");
for (size_t s = 1; s < 0x1000; s <<= 1)
{
auto [callPath, returnPath] = CHERI::with_interrupts_disabled([&]() {
use_stack(s);
auto callPath = noop_call(rdcycle());
auto returnPath = noop_return(s);
returnPath = rdcycle() - returnPath;
check_stack_zeroed();
return std::tuple{callPath, returnPath};
});
printf(__XSTRING(BOARD) "\t%d\t%d\t%d\n", s, callPath, returnPath);
}
}