From d1ea53995ca8c385db79174d9b2fa133fd52b0aa Mon Sep 17 00:00:00 2001 From: Eric Biederman Date: Sat, 28 Jun 2003 06:49:45 +0000 Subject: - Update romcc so that it more successfully spills registers to the xmm registers - Add several more test cases. - Bump the version number to .32 git-svn-id: svn://svn.coreboot.org/coreboot/trunk@919 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- util/romcc/tests/simple_test41.c | 14 ++++++++++++ util/romcc/tests/simple_test43.c | 47 ++++++++++++++++++++++++++++++++++++++++ util/romcc/tests/simple_test45.c | 41 +++++++++++++++++++++++++++++++++++ util/romcc/tests/simple_test46.c | 41 +++++++++++++++++++++++++++++++++++ util/romcc/tests/simple_test47.c | 43 ++++++++++++++++++++++++++++++++++++ 5 files changed, 186 insertions(+) create mode 100644 util/romcc/tests/simple_test41.c create mode 100644 util/romcc/tests/simple_test43.c create mode 100644 util/romcc/tests/simple_test45.c create mode 100644 util/romcc/tests/simple_test46.c create mode 100644 util/romcc/tests/simple_test47.c (limited to 'util/romcc/tests') diff --git a/util/romcc/tests/simple_test41.c b/util/romcc/tests/simple_test41.c new file mode 100644 index 0000000000..9beee3ec2a --- /dev/null +++ b/util/romcc/tests/simple_test41.c @@ -0,0 +1,14 @@ +static void main(void) +{ + unsigned long a,b,c, d; + volatile unsigned long *val = (volatile unsigned long *)0x1234; + a = val[0]; + b = val[1]; + c = a*b; + val[2] = c; + d = val[3]; + a = c / d; + b = c % d; + val[4] = a; + val[5] = b; +} diff --git a/util/romcc/tests/simple_test43.c b/util/romcc/tests/simple_test43.c new file mode 100644 index 0000000000..4fb2735d83 --- /dev/null +++ b/util/romcc/tests/simple_test43.c @@ -0,0 +1,47 @@ +static void spd_set_memclk(void) +{ + + unsigned min; + unsigned device; + + + min = 0x250; + + + for(device = 0x80; device <= 0x81; device += 1) + { + unsigned cur; + int latency; + unsigned long loops; + + cur = 5 | 0xa0; + latency = __builtin_inw(0xab); + + if (latency > 0x250) { + loops = 1000000; + while(--loops) + ; + if (!loops) { + goto end; + } + + loops = 1000000; + while(--loops) + ; + end: + ; + + } + loops = 1000000; + while(--loops) + ; + + if (latency > 0x250) { + ; + } + + if (cur > 0x250) { + } + } + +} diff --git a/util/romcc/tests/simple_test45.c b/util/romcc/tests/simple_test45.c new file mode 100644 index 0000000000..beb041708c --- /dev/null +++ b/util/romcc/tests/simple_test45.c @@ -0,0 +1,41 @@ +static void spd_set_memclk(void) +{ + unsigned min_cycle_time; + unsigned device; + int new_cycle_time, new_latency; + int index; + int latency; + + min_cycle_time = 0x50; + device = 0x50; + new_cycle_time = 0xa0; + new_latency = 5; + + + latency = 0; + for(index = 0; index < 3; index++, latency++) { + unsigned long loops; + loops = 1000000; + do { + unsigned short val; + val = __builtin_inw(0x10e0); + } while(--loops); + if (!loops) { + continue; + } + + __builtin_outb(device, 0xe4); + __builtin_outb(index, 0xe8); + + loops = 1000000; + while(--loops) + ; + } + if (new_latency > 4){ + return; + } + + if (new_cycle_time > min_cycle_time) { + min_cycle_time = new_cycle_time; + } +} diff --git a/util/romcc/tests/simple_test46.c b/util/romcc/tests/simple_test46.c new file mode 100644 index 0000000000..bd84246b02 --- /dev/null +++ b/util/romcc/tests/simple_test46.c @@ -0,0 +1,41 @@ +static void spd_set_memclk(void) +{ + static const int indicies[] = { 26, 23, 9 }; + int new_cycle_time, new_latency; + int index; + unsigned min_cycle_time, min_latency; + unsigned device; + + min_cycle_time = 0x50; + min_latency = 2; + device = 0x50; + new_cycle_time = 0xa0; + new_latency = 5; + + for(index = 0; index < 3; index++) { + unsigned long loops; + unsigned long address; + address = indicies[index]; + loops = 1000000; + do { + } while(--loops); + if (loops < 0) { + continue; + } + + __builtin_outb(device, 0x10e4); + __builtin_outb(address, 0x10e8); + + loops = 1000000; + if ((loops?0:-1) < 0) { + continue; + } + } + + if (new_cycle_time > min_cycle_time) { + min_cycle_time = new_cycle_time; + } + if (new_latency > min_latency) { + min_latency = new_latency; + } +} diff --git a/util/romcc/tests/simple_test47.c b/util/romcc/tests/simple_test47.c new file mode 100644 index 0000000000..28d72eaa9a --- /dev/null +++ b/util/romcc/tests/simple_test47.c @@ -0,0 +1,43 @@ +static void spd_set_memclk(void) +{ + unsigned min_cycle_time, min_latency; + unsigned device; + int new_cycle_time, new_latency; + int index; + int latency; + + min_cycle_time = 0x50; + min_latency = 2; + device = 0x50; + new_latency = 5; + new_cycle_time = 0xa0; + latency = 23; + + for(index = 0; index < 3; index++, latency++) { + unsigned long loops; + unsigned address = index; + + loops = 1000000; + do { + } while(--loops); + if (loops) { + continue; + } + + __builtin_outb(device, 0x10e4); + + __builtin_outb(address & 0xFF, 0x10e8); + + loops = 1000000; + while(--loops) + ; + } + + if (new_cycle_time > min_cycle_time) { + min_cycle_time = new_cycle_time; + } + if (new_latency > min_latency) { + min_latency = new_latency; + } +} + -- cgit v1.2.3