aboutsummaryrefslogtreecommitdiff
path: root/util/romcc/tests/simple_test3.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/romcc/tests/simple_test3.c')
-rw-r--r--util/romcc/tests/simple_test3.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/util/romcc/tests/simple_test3.c b/util/romcc/tests/simple_test3.c
new file mode 100644
index 0000000000..008d0ab528
--- /dev/null
+++ b/util/romcc/tests/simple_test3.c
@@ -0,0 +1,38 @@
+static void spd_set_drb(void)
+{
+ /*
+ * Effects: Uses serial presence detect to set the
+ * DRB registers which holds the ending memory address assigned
+ * to each DIMM.
+ */
+ unsigned end_of_memory;
+ unsigned device;
+
+ end_of_memory = 0; /* in multiples of 8MiB */
+ device = 0x50;
+ while (device <= 0x53) {
+ unsigned side1_bits, side2_bits;
+ int byte, byte2;
+
+ side1_bits = side2_bits = -1;
+
+ /* rows */
+ byte = -1;
+ if (1) {
+ /* now I have the ram size in bits as a power of two (less 1) */
+ /* Make it mulitples of 8MB */
+ side1_bits -= 25;
+ }
+
+ /* Compute the end address for the DRB register */
+ /* Only process dimms < 2GB (2^8 * 8MB) */
+ if (1) {
+ end_of_memory += side1_bits;
+ }
+ __builtin_outl(end_of_memory, 0x1234);
+
+ if (1) {
+ end_of_memory += side2_bits;
+ }
+ }
+}