--- trunk/src/include/arcbios.h 2007/10/08 16:18:11 6 +++ trunk/src/include/arcbios.h 2007/10/08 16:20:26 28 @@ -2,7 +2,7 @@ #define ARCBIOS_H /* - * Copyright (C) 2004-2005 Anders Gavare. All rights reserved. + * Copyright (C) 2004-2006 Anders Gavare. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * - * $Id: arcbios.h,v 1.9 2005/05/23 12:21:46 debug Exp $ + * $Id: arcbios.h,v 1.13 2006/06/30 20:22:54 debug Exp $ * * Headerfile for src/arcbios.c. * @@ -59,66 +59,8 @@ void arcbios_console_init(struct machine *machine, uint64_t vram, uint64_t ctrlregs); -void arcbios_init(struct machine *machine, int is64bit, - uint64_t sgi_ram_offset); - - -#define ARC_CONSOLE_MAX_X 80 -#define ARC_CONSOLE_MAX_Y 25 - -#define ARC_MAX_ESC 16 - -#define MAX_OPEN_STRINGLEN 200 -#define ARC_MAX_HANDLES 10 - -#define MAX_STRING_TO_COMPONENT 20 -#define MAX_CONFIG_DATA 50 - -struct machine_arcbios { - /* General stuff: */ - int arc_64bit; - int wordlen; /* cached */ - - /* VGA Console I/O: */ - int vgaconsole; /* 1 or 0 */ - uint64_t console_vram; - uint64_t console_ctrlregs; - char escape_sequence[ARC_MAX_ESC+1]; - int in_escape_sequence; - int console_maxx; - int console_maxy; - int console_curx; - int console_cury; - int console_reverse; - int console_curcolor; - - /* File handles: */ - int file_handle_in_use[ARC_MAX_HANDLES]; - char *file_handle_string[ARC_MAX_HANDLES]; - uint64_t current_seek_offset[ARC_MAX_HANDLES]; - - /* Memory: */ - int n_memdescriptors; - uint64_t memdescriptor_base; - - /* Component tree: */ - uint64_t next_component_address; - int n_components; - - char *string_to_component[MAX_STRING_TO_COMPONENT]; - uint64_t string_to_component_value[MAX_STRING_TO_COMPONENT]; - int n_string_to_components; - - /* Configuration data: */ - int n_configuration_data; - uint64_t configuration_data_next_addr; - uint64_t configuration_data_component[MAX_CONFIG_DATA]; - int configuration_data_len[MAX_CONFIG_DATA]; - uint64_t configuration_data_configdata[MAX_CONFIG_DATA]; - - /* SCSI: */ - uint64_t scsicontroller; /* component addr */ -}; +void arcbios_init(struct machine *machine, int is64bit, uint64_t sgi_ram_offset, + char *primary_ether_string, uint8_t *primary_ether_macaddr); /* For internal use in arcbios.c: */ @@ -137,5 +79,30 @@ struct arcbios_component64 component; }; +#define ARC_BOOTSTR_BUFLEN 1000 + + +/* + * Problem: kernels seem to be loaded at low addresses in RAM, so + * storing environment strings and memory descriptors there is a bad + * idea. They are stored at 0xbfc..... instead. The ARC SPB must + * be at physical address 0x1000 though. + */ + +#define SGI_SPB_ADDR 0xffffffff80001000ULL +/* 0xbfc10000 is firmware callback vector stuff */ +#define ARC_FIRMWARE_VECTORS 0xffffffffbfc80000ULL +#define ARC_FIRMWARE_ENTRIES 0xffffffffbfc88000ULL +#define ARC_ARGV_START 0xffffffffbfc90000ULL +#define ARC_ENV_STRINGS 0xffffffffbfc98000ULL +#define ARC_ENV_POINTERS 0xffffffffbfc9d000ULL +#define SGI_SYSID_ADDR 0xffffffffbfca1800ULL +#define ARC_DSPSTAT_ADDR 0xffffffffbfca1c00ULL +#define ARC_MEMDESC_ADDR 0xffffffffbfca1c80ULL +#define ARC_CONFIG_DATA_ADDR 0xffffffffbfca2000ULL +#define FIRST_ARC_COMPONENT 0xffffffffbfca8000ULL +#define ARC_PRIVATE_VECTORS 0xffffffffbfcb0000ULL +#define ARC_PRIVATE_ENTRIES 0xffffffffbfcb8000ULL + #endif /* ARCBIOS_H */