cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

check_abs.c (808B)


      1#include <stdio.h>
      2#include <stdlib.h>
      3#include <stdint.h>
      4#include "sys.h"
      5#include "crisutils.h"
      6
      7static always_inline int cris_abs(int n)
      8{
      9	int r;
     10	asm ("abs\t%1, %0\n" : "=r" (r) : "r" (n));
     11	return r;
     12}
     13
     14static always_inline void
     15verify_abs(int val, int res,
     16	   const int n, const int z, const int v, const int c)
     17{
     18	int r;
     19
     20	cris_tst_cc_init();
     21	r = cris_abs(val);
     22	cris_tst_cc(n, z, v, c);
     23	if (r != res)
     24		err();
     25}
     26
     27int main(void)
     28{
     29	verify_abs(-1, 1, 0, 0, 0, 0);
     30	verify_abs(0x80000000, 0x80000000, 1, 0, 0, 0);
     31	verify_abs(0x7fffffff, 0x7fffffff, 0, 0, 0, 0);
     32	verify_abs(42, 42, 0, 0, 0, 0);
     33	verify_abs(1, 1, 0, 0, 0, 0);
     34	verify_abs(0xffff, 0xffff, 0, 0, 0, 0);
     35	verify_abs(0xffff, 0xffff, 0, 0, 0, 0);
     36	verify_abs(-31, 0x1f, 0, 0, 0, 0);
     37	verify_abs(0, 0, 0, 1, 0, 0);
     38	pass();
     39	return 0;
     40}