2N/A/*
2N/A * GRUB -- GRand Unified Bootloader
2N/A * Copyright (C) 2011 Free Software Foundation, Inc.
2N/A *
2N/A * GRUB is free software: you can redistribute it and/or modify
2N/A * it under the terms of the GNU General Public License as published by
2N/A * the Free Software Foundation, either version 3 of the License, or
2N/A * (at your option) any later version.
2N/A *
2N/A * GRUB is distributed in the hope that it will be useful,
2N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of
2N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2N/A * GNU General Public License for more details.
2N/A *
2N/A * You should have received a copy of the GNU General Public License
2N/A * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
2N/A */
2N/A
2N/A#ifndef GRUB_ARC_HEADER
2N/A#define GRUB_ARC_HEADER 1
2N/A
2N/A#include <grub/types.h>
2N/A#include <grub/symbol.h>
2N/A
2N/Atypedef unsigned grub_arc_enum_t;
2N/Atypedef grub_uint64_t grub_arc_ularge_t;
2N/Atypedef unsigned long grub_arc_ulong_t;
2N/Atypedef long grub_arc_long_t;
2N/Atypedef unsigned short grub_arc_ushort_t;
2N/Atypedef unsigned char grub_arc_uchar_t;
2N/A
2N/Atypedef grub_arc_long_t grub_arc_err_t;
2N/Atypedef grub_arc_ulong_t grub_arc_fileno_t;
2N/A
2N/Astruct grub_arc_memory_descriptor
2N/A{
2N/A grub_arc_enum_t type;
2N/A grub_arc_ulong_t start_page;
2N/A grub_arc_ulong_t num_pages;
2N/A};
2N/A
2N/Aenum grub_arc_memory_type
2N/A {
2N/A GRUB_ARC_MEMORY_EXCEPTION_BLOCK,
2N/A GRUB_ARC_MEMORY_SYSTEM_PARAMETER_BLOCK,
2N/A#ifdef GRUB_CPU_WORDS_BIGENDIAN
2N/A GRUB_ARC_MEMORY_FREE_CONTIGUOUS,
2N/A#endif
2N/A GRUB_ARC_MEMORY_FREE,
2N/A GRUB_ARC_MEMORY_BADRAM,
2N/A GRUB_ARC_MEMORY_LOADED, GRUB_ARC_MEMORY_FW_TEMPORARY,
2N/A GRUB_ARC_MEMORY_FW_PERMANENT,
2N/A#ifndef GRUB_CPU_WORDS_BIGENDIAN
2N/A GRUB_ARC_MEMORY_FREE_CONTIGUOUS,
2N/A#endif
2N/A } grub_arc_memory_type_t;
2N/A
2N/Astruct grub_arc_timeinfo
2N/A{
2N/A grub_arc_ushort_t y;
2N/A grub_arc_ushort_t m;
2N/A grub_arc_ushort_t d;
2N/A grub_arc_ushort_t h;
2N/A grub_arc_ushort_t min;
2N/A grub_arc_ushort_t s;
2N/A grub_arc_ushort_t ms;
2N/A};
2N/A
2N/Astruct grub_arc_display_status
2N/A{
2N/A grub_arc_ushort_t x;
2N/A grub_arc_ushort_t y;
2N/A grub_arc_ushort_t w;
2N/A grub_arc_ushort_t h;
2N/A grub_arc_uchar_t fgcolor;
2N/A grub_arc_uchar_t bgcolor;
2N/A grub_arc_uchar_t high_intensity;
2N/A grub_arc_uchar_t underscored;
2N/A grub_arc_uchar_t reverse_video;
2N/A};
2N/A
2N/Astruct grub_arc_component
2N/A{
2N/A grub_arc_enum_t class;
2N/A grub_arc_enum_t type;
2N/A grub_arc_enum_t flags;
2N/A grub_arc_ushort_t version;
2N/A grub_arc_ushort_t rev;
2N/A grub_arc_ulong_t key;
2N/A grub_arc_ulong_t affinity;
2N/A grub_arc_ulong_t configdatasize;
2N/A grub_arc_ulong_t idlen;
2N/A const char *idstr;
2N/A};
2N/A
2N/Aenum
2N/A {
2N/A#ifdef GRUB_CPU_WORDS_BIGENDIAN
2N/A GRUB_ARC_COMPONENT_TYPE_ARC = 1,
2N/A#else
2N/A GRUB_ARC_COMPONENT_TYPE_ARC,
2N/A#endif
2N/A GRUB_ARC_COMPONENT_TYPE_CPU,
2N/A GRUB_ARC_COMPONENT_TYPE_FPU,
2N/A GRUB_ARC_COMPONENT_TYPE_PRI_I_CACHE,
2N/A GRUB_ARC_COMPONENT_TYPE_PRI_D_CACHE,
2N/A GRUB_ARC_COMPONENT_TYPE_SEC_I_CACHE,
2N/A GRUB_ARC_COMPONENT_TYPE_SEC_D_CACHE,
2N/A GRUB_ARC_COMPONENT_TYPE_SEC_CACHE,
2N/A GRUB_ARC_COMPONENT_TYPE_EISA,
2N/A GRUB_ARC_COMPONENT_TYPE_TCA,
2N/A GRUB_ARC_COMPONENT_TYPE_SCSI,
2N/A GRUB_ARC_COMPONENT_TYPE_DTIA,
2N/A GRUB_ARC_COMPONENT_TYPE_MULTIFUNC,
2N/A GRUB_ARC_COMPONENT_TYPE_DISK_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_TAPE_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_CDROM_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_WORM_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_SERIAL_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_NET_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_DISPLAY_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_PARALLEL_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_POINTER_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_KBD_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_AUDIO_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_OTHER_CONTROLLER,
2N/A GRUB_ARC_COMPONENT_TYPE_DISK,
2N/A GRUB_ARC_COMPONENT_TYPE_FLOPPY,
2N/A GRUB_ARC_COMPONENT_TYPE_TAPE,
2N/A GRUB_ARC_COMPONENT_TYPE_MODEM,
2N/A GRUB_ARC_COMPONENT_TYPE_MONITOR,
2N/A GRUB_ARC_COMPONENT_TYPE_PRINTER,
2N/A GRUB_ARC_COMPONENT_TYPE_POINTER,
2N/A GRUB_ARC_COMPONENT_TYPE_KBD,
2N/A GRUB_ARC_COMPONENT_TYPE_TERMINAL,
2N/A GRUB_ARC_COMPONENT_TYPE_OTHER_PERIPHERAL,
2N/A GRUB_ARC_COMPONENT_TYPE_LINE,
2N/A GRUB_ARC_COMPONENT_TYPE_NET,
2N/A GRUB_ARC_COMPONENT_TYPE_MEMORY_UNIT,
2N/A };
2N/A
2N/Astruct grub_arc_fileinfo
2N/A{
2N/A grub_arc_ularge_t start;
2N/A grub_arc_ularge_t end;
2N/A grub_arc_ularge_t current;
2N/A grub_arc_enum_t type;
2N/A grub_arc_ulong_t fnamelength;
2N/A grub_arc_uchar_t attr;
2N/A char filename[32];
2N/A};
2N/A
2N/Astruct grub_arc_firmware_vector
2N/A{
2N/A /* 0x00. */
2N/A void *load;
2N/A void *invoke;
2N/A void *execute;
2N/A void *halt;
2N/A
2N/A /* 0x10. */
2N/A void (*powerdown) (void);
2N/A void (*restart) (void);
2N/A void (*reboot) (void);
2N/A void (*exit) (void);
2N/A
2N/A /* 0x20. */
2N/A void *reserved1;
2N/A const struct grub_arc_component * (*getpeer) (const struct grub_arc_component *comp);
2N/A const struct grub_arc_component * (*getchild) (const struct grub_arc_component *comp);
2N/A void *getparent;
2N/A
2N/A /* 0x30. */
2N/A void *getconfigurationdata;
2N/A void *addchild;
2N/A void *deletecomponent;
2N/A void *getcomponent;
2N/A
2N/A /* 0x40. */
2N/A void *saveconfiguration;
2N/A void *getsystemid;
2N/A struct grub_arc_memory_descriptor *(*getmemorydescriptor) (struct grub_arc_memory_descriptor *current);
2N/A void *reserved2;
2N/A
2N/A /* 0x50. */
2N/A struct grub_arc_timeinfo *(*gettime) (void);
2N/A void *getrelativetime;
2N/A void *getdirectoryentry;
2N/A grub_arc_err_t (*open) (const char *path, grub_arc_enum_t mode,
2N/A grub_arc_fileno_t *fileno);
2N/A
2N/A /* 0x60. */
2N/A grub_arc_err_t (*close) (grub_arc_fileno_t fileno);
2N/A grub_arc_err_t (*read) (grub_arc_fileno_t fileno, void *buf,
2N/A grub_arc_ulong_t n,
2N/A grub_arc_ulong_t *count);
2N/A grub_arc_err_t (*get_read_status) (grub_arc_fileno_t fileno);
2N/A grub_arc_err_t (*write) (grub_arc_fileno_t fileno, void *buf,
2N/A grub_arc_ulong_t n,
2N/A grub_arc_ulong_t *count);
2N/A
2N/A /* 0x70. */
2N/A grub_arc_err_t (*seek) (grub_arc_fileno_t fileno,
2N/A grub_arc_ularge_t *pos, grub_arc_enum_t mode);
2N/A void *mount;
2N/A void *getenvironmentvariable;
2N/A void *setenvironmentvariable;
2N/A
2N/A /* 0x80. */
2N/A grub_arc_err_t (*getfileinformation) (grub_arc_fileno_t fileno,
2N/A struct grub_arc_fileinfo *info);
2N/A void *setfileinformation;
2N/A void *flushallcaches;
2N/A void *testunicodecharacter;
2N/A
2N/A /* 0x90. */
2N/A struct grub_arc_display_status * (*getdisplaystatus) (grub_arc_fileno_t fileno);
2N/A};
2N/A
2N/Astruct grub_arc_adapter
2N/A{
2N/A grub_arc_ulong_t adapter_type;
2N/A grub_arc_ulong_t adapter_vector_length;
2N/A void *adapter_vector;
2N/A};
2N/A
2N/Astruct grub_arc_system_parameter_block
2N/A{
2N/A grub_arc_ulong_t signature;
2N/A grub_arc_ulong_t length;
2N/A grub_arc_ushort_t version;
2N/A grub_arc_ushort_t revision;
2N/A void *restartblock;
2N/A void *debugblock;
2N/A void *gevector;
2N/A void *utlbmissvector;
2N/A grub_arc_ulong_t firmware_vector_length;
2N/A struct grub_arc_firmware_vector *firmwarevector;
2N/A grub_arc_ulong_t private_vector_length;
2N/A void *private_vector;
2N/A grub_arc_ulong_t adapter_count;
2N/A struct grub_arc_adapter adapters[0];
2N/A};
2N/A
2N/A
2N/A#define GRUB_ARC_SYSTEM_PARAMETER_BLOCK ((struct grub_arc_system_parameter_block *) 0xa0001000)
2N/A#define GRUB_ARC_FIRMWARE_VECTOR (GRUB_ARC_SYSTEM_PARAMETER_BLOCK->firmwarevector)
2N/A#define GRUB_ARC_STDIN 0
2N/A#define GRUB_ARC_STDOUT 1
2N/A
2N/Aint EXPORT_FUNC (grub_arc_iterate_devs) (int (*hook) (const char *name, const struct grub_arc_component *comp), int alt_names);
2N/A
2N/A#define FOR_ARC_CHILDREN(comp, parent) for (comp = GRUB_ARC_FIRMWARE_VECTOR->getchild (parent); comp; comp = GRUB_ARC_FIRMWARE_VECTOR->getpeer (comp))
2N/A
2N/Aextern void grub_arcdisk_init (void);
2N/Aextern void grub_arcdisk_fini (void);
2N/A
2N/A
2N/A#endif