From 6ee72c288121ffa611ad75a00682bf103acea1fe Mon Sep 17 00:00:00 2001 From: David Li Date: Tue, 12 Jan 2016 09:20:34 -0700 Subject: Make sure GCC uses argument to printi --- devkit/cacheracer.h | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'devkit/cacheracer.h') diff --git a/devkit/cacheracer.h b/devkit/cacheracer.h index 5885395..7626524 100644 --- a/devkit/cacheracer.h +++ b/devkit/cacheracer.h @@ -31,20 +31,33 @@ void __start(int core_id); #define HOME_RW ((void *) HOME_RW_START) #define HOME_DATA ((void *) HOME_DATA_START) +/** Cache Layout + * + * Each team is given a shared direct-mapped cache with 2 blocks; each + * block contains 64 words (256 bytes) of memory. + */ + +#define CACHE_NUM_BLOCKS 2 + /** Definitions of global data */ #define TAUNT_SIZE 228 struct player_status { + unsigned int cache_tags[CACHE_NUM_BLOCKS]; + unsigned int cache_fetch_tags[CACHE_NUM_BLOCKS]; + unsigned int cycles_left; + unsigned int score; + unsigned char payload; + unsigned char pad0, pad1, pad2; signed char taunt[TAUNT_SIZE]; -}; +} __attribute__ ((packed)); /** Pointers to global structures */ #define HOME_STATUS ((struct player_status*) (HOME_RW_START - sizeof(struct player_status))) -__attribute__ ((unused, noinline)) -static void prints(char *fmt) { +__attribute__ ((unused, noinline)) static void prints(char *fmt) { __asm__ __volatile__ ( "ADDI a1, %0, 0\n\t" "ADDI a0, zero, 22\n\t" @@ -55,11 +68,12 @@ static void prints(char *fmt) { } __attribute__ ((unused, noinline)) static void printi(int i) { - /* invoke system call number 22 */ __asm__ __volatile__ ( - "ADDI a1, a0, 0\n\t" + "ADDI a1, %0, 0\n\t" "ADDI a0, zero, 23\n\t" "SCALL\n\t" + : + : "r" (i) ); } -- cgit v1.2.3