aboutsummaryrefslogtreecommitdiff
path: root/sys/boot/arc/lib/arch/alpha/rpb.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/boot/arc/lib/arch/alpha/rpb.c')
-rw-r--r--sys/boot/arc/lib/arch/alpha/rpb.c196
1 files changed, 0 insertions, 196 deletions
diff --git a/sys/boot/arc/lib/arch/alpha/rpb.c b/sys/boot/arc/lib/arch/alpha/rpb.c
deleted file mode 100644
index 492346155751..000000000000
--- a/sys/boot/arc/lib/arch/alpha/rpb.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*-
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#include <stand.h>
-#include <machine/rpb.h>
-#include "arctypes.h"
-#include "arcfuncs.h"
-
-struct rpb RPB = {
- 0, /* rpb_phys */
- {"HWRPB"}, /* rpb_magic */
- HWRPB_DSRDB_MINVERS, /* rpb_version */
- sizeof(struct rpb), /* rpb_size */
- 0, /* rpb_primary_cpu_id */
- 8192, /* rpb_page_size */
- 43, /* rpb_phys_addr_size */
- 0, /* rpb_max_asn */
- {0}, /* rpb_ssn */
- ST_EB164, /* rpb_type */
- SV_ST_ALPHAPC164LX_533, /* rpb_variation */
- {"0000"}, /* rpb_revision */
- 1024*4096, /* rpb_intr_freq */
- 533*1024*1024, /* rpb_cc_freq */
- 0, /* rpb_vptb */
- 0, /* rpb_reserved_arch */
- 0, /* rpb_tbhint_off */
- 0, /* rpb_pcs_cnt */
- 0, /* rpb_pcs_size */
- 0, /* rpb_pcs_off */
- 0, /* rpb_ctb_cnt */
- 0, /* rpb_ctb_size */
- 0, /* rpb_ctb_off */
- 0, /* rpb_crb_off */
- 0, /* rpb_memdat_off */
- 0, /* rpb_condat_off */
- 0, /* rpb_fru_off */
- 0, /* rpb_save_term */
- 0, /* rpb_save_term_val */
- 0, /* rpb_rest_term */
- 0, /* rpb_rest_term_val */
- 0, /* rpb_restart */
- 0, /* rpb_restart_val */
- 0, /* rpb_reserve_os */
- 0, /* rpb_reserve_hw */
- 0, /* rpb_checksum */
- 0, /* rpb_rxrdy */
- 0, /* rpb_txrdy */
- 0, /* rpb_dsrdb_off */
- {0}, /* rpb_rpb_tbhint */
-};
-
-#define ROUNDUP(x) (((x) + sizeof(u_int64_t) - 1) \
- & ~(sizeof(u_int64_t) - 1))
-
-u_int64_t
-checksum(void *p, size_t size)
-{
- u_int64_t sum = 0;
- u_int64_t *lp = (u_int64_t *)p;
- int i;
-
- printf("checksum(%p, %d)\n", p, size);
- size = ROUNDUP(size) / sizeof(u_int64_t);
- for (i = 0; i < size; i++)
- sum += lp[i];
-}
-
-size_t
-size_mddt()
-{
- int count = 0;
- MEMORY_DESCRIPTOR *desc;
-
- for (desc = GetMemoryDescriptor(NULL); desc;
- desc = GetMemoryDescriptor(desc)) {
- count++;
- }
-
- return ROUNDUP(sizeof(struct mddt)
- + (count - 1) * sizeof(struct mddt_cluster));
-}
-
-void
-write_mddt(struct mddt *mddt, size_t size)
-{
- int count = 0, i;
- MEMORY_DESCRIPTOR *desc;
- u_int64_t *p;
-
- memset(mddt, 0, sizeof(struct mddt));
- for (desc = GetMemoryDescriptor(NULL); desc;
- desc = GetMemoryDescriptor(desc)) {
- struct mddt_cluster *mc;
- mc = &mddt->mddt_clusters[count];
- mc->mddt_pfn = desc->BasePage;
- mc->mddt_pg_cnt = desc->PageCount;
- mc->mddt_pg_test = 0;
- mc->mddt_v_bitaddr = 0;
- mc->mddt_p_bitaddr = 0;
- mc->mddt_bit_cksum = 0;
-
- /*
- * Not sure about the FirmwareTemporary bit but my 164LX has
- * about 60Mb marked this way.
- */
- if (desc->Type == MemoryFree || desc->Type == MemoryFirmwareTemporary)
- mc->mddt_usage = MDDT_SYSTEM;
- else if (desc->Type == MemorySpecialMemory)
- mc->mddt_usage = MDDT_NONVOLATILE; /* ?? */
- else
- mc->mddt_usage = MDDT_PALCODE;
- count++;
- }
- mddt->mddt_cluster_cnt = count;
- mddt->mddt_cksum = checksum(mddt, size);
-}
-
-size_t
-size_rpb()
-{
- return sizeof(struct rpb) + size_mddt();
-}
-
-void
-write_rpb(struct rpb *rpb)
-{
- EXTENDED_SYSTEM_INFORMATION sysinfo;
- SYSTEM_ID *sysid;
-
- ReturnExtendedSystemInformation(&sysinfo);
-
- memset(rpb, 0, sizeof(struct rpb));
- rpb->rpb_phys = 0; /* XXX */
- strcpy(rpb->rpb_magic, "HWRPB");
- rpb->rpb_version = HWRPB_DSRDB_MINVERS;
- rpb->rpb_size = sizeof(struct rpb);
- rpb->rpb_primary_cpu_id = 0; /* XXX */
- rpb->rpb_page_size = sysinfo.ProcessorPageSize;
- rpb->rpb_phys_addr_size = sysinfo.NumberOfPhysicalAddressBits;
- rpb->rpb_max_asn = sysinfo.MaximumAddressSpaceNumber;
- rpb->rpb_type = ST_EB164; /* XXX */
- rpb->rpb_variation = SV_ST_ALPHAPC164LX_533; /* XXX */
- rpb->rpb_intr_freq = 1024*4096; /* XXX */
- rpb->rpb_cc_freq = 533000000; /* XXX */
- rpb->rpb_memdat_off = sizeof(struct rpb);
- write_mddt((struct mddt *)((caddr_t) rpb + rpb->rpb_memdat_off),
- size_mddt());
- rpb->rpb_checksum = checksum(rpb, 280); /* only sum first 280 bytes */
-}
-
-struct rpb *
-make_rpb()
-{
- EXTENDED_SYSTEM_INFORMATION sysinfo;
- struct rpb *rpb;
-
- ReturnExtendedSystemInformation(&sysinfo);
- printf("sysinfo.ProcessorId = %x\n", sysinfo.ProcessorId);
- printf("sysinfo.ProcessorRevision = %d\n", sysinfo.ProcessorRevision);
- printf("sysinfo.ProcessorPageSize = %d\n", sysinfo.ProcessorPageSize);
- printf("sysinfo.NumberOfPhysicalAddressBits = %d\n", sysinfo.NumberOfPhysicalAddressBits);
- printf("sysinfo.MaximumAddressSpaceNumber = %d\n", sysinfo.MaximumAddressSpaceNumber);
- printf("sysinfo.ProcessorCycleCounterPeriod = %d\n", sysinfo.ProcessorCycleCounterPeriod);
- printf("sysinfo.SystemRevision = %d\n", sysinfo.SystemRevision);
- printf("sysinfo.SystemSerialNumber = %s\n", sysinfo.SystemSerialNumber);
- printf("sysinfo.FirmwareVersion = %s\n", sysinfo.FirmwareVersion);
-
- rpb = malloc(size_rpb());
- write_rpb(rpb);
- return rpb;
-}