arcbios.h Source File

Back to the index.

arcbios.h
Go to the documentation of this file.
1 #ifndef ARCBIOS_H
2 #define ARCBIOS_H
3 
4 /*
5  * Copyright (C) 2004-2018 Anders Gavare. All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  * 3. The name of the author may not be used to endorse or promote products
16  * derived from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  *
30  *
31  * Headerfile for src/arcbios.c.
32  *
33  * (Note: There are also files in the thirdparty directory called
34  * arcbios_other.h and sgi_arcbios.h, which are from NetBSD.)
35  */
36 
37 #include "misc.h"
38 
39 #include "thirdparty/sgi_arcbios.h"
40 
41 
42 struct cpu;
43 
44 /* arcbios.c: */
46  char *string, uint64_t component);
48  uint64_t scsicontroller_component);
51  uint64_t base, uint64_t len, int arctype);
52 uint64_t arcbios_addchild_manual(struct cpu *cpu,
53  uint64_t cclass, uint64_t type, uint64_t flags, uint64_t version,
54  uint64_t revision, uint64_t key, uint64_t affinitymask,
55  const char *identifier, uint64_t parent, void *config_data,
56  size_t config_len);
57 int arcbios_emul(struct cpu *cpu);
59 
61  uint64_t vram, uint64_t ctrlregs);
62 void arcbios_init(struct machine *machine, int is64bit, uint64_t sgi_ram_offset,
63  const char *primary_ether_string, uint8_t *primary_ether_macaddr);
64 
65 
66 /* For internal use in arcbios.c: */
67 
69  uint32_t ptr_peer;
70  uint32_t ptr_child;
71  uint32_t ptr_parent;
73 };
74 
76  uint64_t ptr_peer;
77  uint64_t ptr_child;
78  uint64_t ptr_parent;
79  struct arcbios_component64 component;
80 };
81 
82 #define ARC_BOOTSTR_BUFLEN 1000
83 
84 
85 /*
86  * Problem: kernels seem to be loaded at low addresses in RAM, so
87  * storing environment strings and memory descriptors there is a bad
88  * idea. They are stored at 0xbfc..... instead. The ARC SPB must
89  * be at physical address 0x1000 though.
90  */
91 
92 #define SGI_SPB_ADDR 0xffffffff80001000ULL
93 /* 0xbfc10000 is firmware callback vector stuff */
94 #define ARC_FIRMWARE_VECTORS 0xffffffffbfc80000ULL
95 #define ARC_FIRMWARE_ENTRIES 0xffffffffbfc88000ULL
96 #define ARC_ARGV_START 0xffffffffbfc90000ULL
97 #define ARC_ENV_STRINGS 0xffffffffbfc98000ULL
98 #define ARC_ENV_SGI 0xffffffffbfc04000ULL
99 #define ARC_ENV_STRINGS_SGI 0xffffffffbfc04040ULL
100 #define ARC_ENV_POINTERS 0xffffffffbfc9d000ULL
101 #define SGI_SYSID_ADDR 0xffffffffbfca1800ULL
102 #define ARC_DSPSTAT_ADDR 0xffffffffbfca1c00ULL
103 #define ARC_MEMDESC_ADDR 0xffffffffbfca1c80ULL
104 #define ARC_CONFIG_DATA_ADDR 0xffffffffbfca2000ULL
105 #define FIRST_ARC_COMPONENT 0xffffffffbfca8000ULL
106 #define ARC_PRIVATE_VECTORS 0xffffffffbfcb0000ULL
107 #define ARC_PRIVATE_ENTRIES 0xffffffffbfcb8000ULL
108 
109 
110 #endif /* ARCBIOS_H */
uint64_t ptr_peer
Definition: arcbios.h:76
uint64_t ptr_child
Definition: arcbios.h:77
uint32_t ptr_peer
Definition: arcbios.h:69
void arcbios_register_scsicontroller(struct machine *machine, uint64_t scsicontroller_component)
Definition: arcbios.cc:414
void arcbios_console_init(struct machine *machine, uint64_t vram, uint64_t ctrlregs)
Definition: arcbios.cc:2155
uint64_t arcbios_get_scsicontroller(struct machine *machine)
Definition: arcbios.cc:424
int arcbios_emul(struct cpu *cpu)
Definition: arcbios.cc:1159
uint32_t ptr_child
Definition: arcbios.h:70
uint32_t ptr_parent
Definition: arcbios.h:71
uint64_t arcbios_addchild_manual(struct cpu *cpu, uint64_t cclass, uint64_t type, uint64_t flags, uint64_t version, uint64_t revision, uint64_t key, uint64_t affinitymask, const char *identifier, uint64_t parent, void *config_data, size_t config_len)
Definition: arcbios.cc:830
Definition: cpu.h:326
struct arcbios_component component
Definition: arcbios.h:72
void arcbios_set_default_exception_handler(struct cpu *cpu)
Definition: arcbios.cc:1866
void arcbios_add_string_to_component(struct machine *machine, char *string, uint64_t component)
Definition: arcbios.cc:59
void arcbios_add_memory_descriptor(struct cpu *cpu, uint64_t base, uint64_t len, int arctype)
Definition: arcbios.cc:436
void arcbios_init(struct machine *machine, int is64bit, uint64_t sgi_ram_offset, const char *primary_ether_string, uint8_t *primary_ether_macaddr)
Definition: arcbios.cc:2476
uint64_t ptr_parent
Definition: arcbios.h:78

Generated on Fri Dec 7 2018 19:52:23 for GXemul by doxygen 1.8.13