summaryrefslogtreecommitdiffstats
path: root/util/romcc/tests
diff options
context:
space:
mode:
authorEric Biederman <ebiederm@xmission.com>2003-06-28 06:49:45 +0000
committerEric Biederman <ebiederm@xmission.com>2003-06-28 06:49:45 +0000
commitd1ea53995ca8c385db79174d9b2fa133fd52b0aa (patch)
treea2c40289914c50d0f7409ddf90c9a6c3b2485447 /util/romcc/tests
parentdb59928fd93080e5376e45f7dcf7ddee0262e336 (diff)
downloadcoreboot-d1ea53995ca8c385db79174d9b2fa133fd52b0aa.tar.gz
coreboot-d1ea53995ca8c385db79174d9b2fa133fd52b0aa.tar.bz2
coreboot-d1ea53995ca8c385db79174d9b2fa133fd52b0aa.zip
- 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
Diffstat (limited to 'util/romcc/tests')
-rw-r--r--util/romcc/tests/simple_test41.c14
-rw-r--r--util/romcc/tests/simple_test43.c47
-rw-r--r--util/romcc/tests/simple_test45.c41
-rw-r--r--util/romcc/tests/simple_test46.c41
-rw-r--r--util/romcc/tests/simple_test47.c43
5 files changed, 186 insertions, 0 deletions
diff --git a/util/romcc/tests/simple_test41.c b/util/romcc/tests/simple_test41.c
new file mode 100644
index 000000000000..9beee3ec2a49
--- /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 000000000000..4fb2735d8330
--- /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 000000000000..beb041708c33
--- /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 000000000000..bd84246b027c
--- /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 000000000000..28d72eaa9abc
--- /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;
+ }
+}
+