summaryrefslogtreecommitdiffstats
path: root/qemu/roms/openhackware/src/bios.h
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/openhackware/src/bios.h')
-rw-r--r--qemu/roms/openhackware/src/bios.h588
1 files changed, 0 insertions, 588 deletions
diff --git a/qemu/roms/openhackware/src/bios.h b/qemu/roms/openhackware/src/bios.h
deleted file mode 100644
index 83d9af47c..000000000
--- a/qemu/roms/openhackware/src/bios.h
+++ /dev/null
@@ -1,588 +0,0 @@
-/*
- * <bios.h>
- *
- * header for Open Hack'Ware
- *
- * Copyright (c) 2004-2005 Jocelyn Mayer
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License V2
- * as published by the Free Software Foundation
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-#if !defined (__BIOS_H__)
-#define __BIOS_H__
-
-#define USE_OPENFIRMWARE
-//#define DEBUG_BIOS 1
-
-#define BIOS_VERSION "0.4.1"
-
-#define DSISR 18
-#define DAR 19
-#define SRR0 26
-#define SRR1 27
-
-#define _tostring(s) #s
-#define stringify(s) _tostring(s)
-
-#if !defined (ASSEMBLY_CODE)
-
-#ifdef DEBUG_BIOS
-#define DPRINTF(fmt, args...) do { dprintf(fmt , ##args); } while (0)
-#else
-#define DPRINTF(fmt, args...) do { } while (0)
-#endif
-#define ERROR(fmt, args...) do { printf("ERROR: " fmt , ##args); } while (0)
-#define MSG(fmt, args...) do { printf(fmt , ##args); } while (0)
-
-#define offsetof(_struct, field) \
-({ \
- typeof(_struct) __tmp_struct; \
- int __off; \
- __off = (char *)(&__tmp_struct.field) - (char *)(&__tmp_struct); \
- __off; \
-})
-
-#define unused __attribute__ (( unused))
-
-/* Useful macro in C code */
-#define MTSPR(num, value) \
-__asm__ __volatile__ ("mtspr " stringify(num) ", %0" :: "r"(value));
-
-/* Architectures */
-enum {
- ARCH_PREP = 0,
- ARCH_CHRP,
- ARCH_MAC99,
- ARCH_POP,
- ARCH_HEATHROW,
-};
-
-/* Hardware definition(s) */
-extern uint32_t isa_io_base;
-#define ISA_IO_BASE 0x80000000
-extern int arch;
-
-/*****************************************************************************/
-/* From start.S : BIOS start code and asm helpers */
-void transfer_handler (void *residual, void *load_addr,
- void *OF_entry, void *bootinfos,
- void *cmdline, void *not_used,
- void *nip, void *stack_base);
-void bug (void);
-
-/* PPC helpers */
-uint32_t mfmsr (void);
-void mtmsr (uint32_t msr);
-uint32_t mfpvr (void);
-void mftb (uint32_t *tb);
-void MMU_on (void);
-void MMU_off (void);
-/* IO helpers */
-uint32_t inb (uint16_t port);
-void outb (uint16_t port, uint32_t val);
-uint32_t inw (uint16_t port);
-void outw (uint16_t port, uint32_t val);
-uint32_t inl (uint16_t port);
-void outl (uint16_t port, uint32_t val);
-void eieio (void);
-/* Misc helpers */
-uint16_t ldswap16 (uint16_t *addr);
-void stswap16 (void *addr, uint16_t val);
-uint32_t ldswap32 (uint32_t *addr);
-void stswap32 (void *addr, uint32_t val);
-void mul64 (uint32_t *ret, uint32_t a, uint32_t b);
-void add64 (uint32_t *ret, uint32_t *a, uint32_t *b);
-
-typedef struct jmp_buf {
- uint32_t gpr[32];
- uint32_t lr;
- uint32_t ctr;
- uint32_t xer;
- uint32_t ccr;
-} jmp_buf;
-int setjmp (jmp_buf env);
-void longjmp (jmp_buf env);
-
-/*****************************************************************************/
-/* PCI BIOS */
-typedef struct pci_common_t pci_common_t;
-typedef struct pci_host_t pci_host_t;
-typedef struct pci_device_t pci_device_t;
-typedef struct pci_bridge_t pci_bridge_t;
-typedef struct pci_ops_t pci_ops_t;
-typedef union pci_u_t pci_u_t;
-
-typedef struct pci_dev_t pci_dev_t;
-struct pci_dev_t {
- uint16_t vendor;
- uint16_t product;
- const unsigned char *type;
- const unsigned char *name;
- const unsigned char *model;
- const unsigned char *compat;
- int acells;
- int scells;
- int icells;
- int (*config_cb)(pci_device_t *device);
- const void *private;
-};
-
-pci_host_t *pci_init (void);
-void pci_get_mem_range (pci_host_t *host, uint32_t *start, uint32_t *len);
-
-/*****************************************************************************/
-/* nvram.c : NVRAM management routines */
-typedef struct nvram_t nvram_t;
-extern nvram_t *nvram;
-
-uint8_t NVRAM_read (nvram_t *nvram, uint32_t addr);
-void NVRAM_write (nvram_t *nvram, uint32_t addr, uint8_t value);
-uint16_t NVRAM_get_size (nvram_t *nvram);
-int NVRAM_format (nvram_t *nvram);
-nvram_t *NVRAM_get_config (uint32_t *RAM_size, int *boot_device,
- void **boot_image, uint32_t *boot_size,
- void **cmdline, uint32_t *cmdline_size,
- void **ramdisk, uint32_t *ramdisk_size);
-
-/*****************************************************************************/
-/* bloc.c : bloc devices management */
-typedef struct pos_t {
- uint32_t bloc;
- uint32_t offset;
-} pos_t;
-
-typedef struct bloc_device_t bloc_device_t;
-typedef struct part_t part_t;
-typedef struct fs_t fs_t;
-
-bloc_device_t *bd_open (int device);
-int bd_seek (bloc_device_t *bd, uint32_t bloc, uint32_t pos);
-int bd_read (bloc_device_t *bd, void *buffer, int len);
-int bd_write (bloc_device_t *bd, const void *buffer, int len);
-#define _IOCTL(a, b) (((a) << 16) | (b))
-#define MEM_SET_ADDR _IOCTL('M', 0x00)
-#define MEM_SET_SIZE _IOCTL('M', 0x01)
-int bd_ioctl (bloc_device_t *bd, int func, void *args);
-uint32_t bd_seclen (bloc_device_t *bd);
-void bd_close (bloc_device_t *bd);
-void bd_reset_all(void);
-uint32_t bd_seclen (bloc_device_t *bd);
-uint32_t bd_maxbloc (bloc_device_t *bd);
-void bd_sect2CHS (bloc_device_t *bd, uint32_t secnum,
- int *cyl, int *head, int *sect);
-uint32_t bd_CHS2sect (bloc_device_t *bd,
- int cyl, int head, int sect);
-part_t *bd_probe (int boot_device);
-bloc_device_t *bd_get (int device);
-void bd_put (bloc_device_t *bd);
-void bd_set_boot_part (bloc_device_t *bd, part_t *partition, int partnum);
-part_t **_bd_parts (bloc_device_t *bd);
-
-void ide_pci_pc_register (uint32_t io_base0, uint32_t io_base1,
- uint32_t io_base2, uint32_t io_base3,
- void *OF_private0, void *OF_private1);
-void ide_pci_pmac_register (uint32_t io_base0, uint32_t io_base1,
- void *OF_private);
-
-/*****************************************************************************/
-/* part.c : partitions management */
-enum part_flags_t {
- PART_TYPE_RAW = 0x0000,
- PART_TYPE_PREP = 0x0001,
- PART_TYPE_APPLE = 0x0002,
- PART_TYPE_ISO9660 = 0x0004,
- PART_FLAG_DUMMY = 0x0010,
- PART_FLAG_DRIVER = 0x0020,
- PART_FLAG_PATCH = 0x0040,
- PART_FLAG_FS = 0x0080,
- PART_FLAG_BOOT = 0x0100,
-};
-
-enum {
- PART_PREP = 0x01,
- PART_CHRP = 0x02,
-};
-
-part_t *part_open (bloc_device_t *bd,
- uint32_t start, uint32_t size, uint32_t spb);
-int part_seek (part_t *part, uint32_t bloc, uint32_t pos);
-int part_read (part_t *part, void *buffer, int len);
-int part_write (part_t *part, const void *buffer, int len);
-void part_close (part_t *part);
-uint32_t part_blocsize (part_t *part);
-uint32_t part_flags (part_t *part);
-uint32_t part_size (part_t *part);
-fs_t *part_fs (part_t *part);
-
-part_t *part_get (bloc_device_t *bd, int partnum);
-part_t *part_probe (bloc_device_t *bd, int set_raw);
-int part_set_boot_file (part_t *part, uint32_t start, uint32_t offset,
- uint32_t size);
-
-/*****************************************************************************/
-/* fs.c : file system management */
-typedef struct dir_t dir_t;
-typedef struct dirent_t dirent_t;
-typedef struct inode_t inode_t;
-
-struct dirent_t {
- dir_t *dir;
- inode_t *inode;
- const unsigned char *dname;
-};
-
-enum {
- INODE_TYPE_UNKNOWN = 0x00FF,
- INODE_TYPE_DIR = 0x0000,
- INODE_TYPE_FILE = 0x0001,
- INODE_TYPE_OTHER = 0x0002,
- INODE_TYPE_MASK = 0x00FF,
- INODE_FLAG_EXEC = 0x0100,
- INODE_FLAG_BOOT = 0x0200,
- INODE_FLAG_MASK = 0xFF00,
-};
-
-/* probe a filesystem from a partition */
-fs_t *fs_probe (part_t *part, int set_raw);
-part_t *fs_part (fs_t *fs);
-/* Recurse thru directories */
-dir_t *fs_opendir (fs_t *fs, const unsigned char *name);
-dirent_t *fs_readdir (dir_t *dir);
-unsigned char *fs_get_path (dirent_t *dirent);
-void fs_closedir (dir_t *dir);
-/* Play with files */
-inode_t *fs_open (fs_t *fs, const unsigned char *name);
-int fs_seek (inode_t *inode, uint32_t bloc, uint32_t pos);
-int fs_read (inode_t *inode, void *buffer, int len);
-int fs_write (inode_t *inode, const void *buffer, unused int len);
-void fs_close (inode_t *inode);
-uint32_t fs_get_type (fs_t *fs);
-uint32_t fs_inode_get_type (inode_t *inode);
-uint32_t fs_inode_get_flags (inode_t *inode);
-part_t *fs_inode_get_part (inode_t *inode);
-
-/* Bootfile */
-unsigned char *fs_get_boot_dirname (fs_t *fs);
-inode_t *fs_get_bootfile (fs_t *fs);
-int fs_raw_set_bootfile (part_t *part,
- uint32_t start_bloc, uint32_t start_offset,
- uint32_t size_bloc, uint32_t size_offset);
-
-/*****************************************************************************/
-/* file.c : file management */
-#define DEFAULT_LOAD_DEST 0x00100000
-
-uint32_t file_seek (inode_t *file, uint32_t pos);
-
-/* Executable files loader */
-int bootfile_load (void **dest, void **entry, void **end,
- part_t *part, int type, const unsigned char *fname,
- uint32_t offset);
-
-/*****************************************************************************/
-/* char.c : char devices */
-typedef struct chardev_t chardev_t;
-typedef struct cops_t cops_t;
-
-struct cops_t {
- int (*open)(void *private);
- int (*close)(void *private);
- int (*read)(void *private);
- int (*write)(void *private, int c);
- /* Won't implement seek for now */
-};
-
-enum {
- CHARDEV_KBD = 0,
- CHARDEV_MOUSE,
- CHARDEV_SERIAL,
- CHARDEV_DISPLAY,
- CHARDEV_LAST,
-};
-
-int chardev_register (int type, cops_t *ops, void *private);
-int chardev_open (chardev_t *dev);
-int chardev_close (chardev_t *dev);
-int chardev_read (chardev_t *dev, void *buffer, int maxlen);
-int chardev_write (chardev_t *dev, const void *buffer, int maxlen);
-int chardev_type (chardev_t *dev);
-
-/* Console driver */
-int console_open (void);
-int console_read (void *buffer, int maxlen);
-int console_write (const void *buffer, int len);
-void console_close (void);
-
-/* PC serial port */
-#define SERIAL_OUT_PORT (0x03F8)
-int pc_serial_register (uint16_t base);
-
-/* CUDA host */
-typedef struct cuda_t cuda_t;
-cuda_t *cuda_init (uint32_t base);
-void cuda_reset (cuda_t *cuda);
-
-/*****************************************************************************/
-/* vga.c : VGA console */
-extern unsigned long vga_fb_phys_addr;
-extern int vga_fb_width;
-extern int vga_fb_height;
-extern int vga_fb_linesize;
-extern int vga_fb_bpp;
-extern int vga_fb_depth;
-void vga_prep_init(void);
-void vga_set_address (uint32_t address);
-void vga_set_mode(int width, int height, int depth);
-void vga_set_palette(int i, unsigned int rgba);
-#define RGBA(r, g, b, a) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))
-#define RGB(r, g, b) RGBA(r, g, b, 0xff)
-unsigned int vga_get_color(unsigned int rgba);
-
-void vga_draw_buf (const void *buf, int buf_linesize,
- int posx, int posy, int width, int height);
-void vga_fill_rect (int posx, int posy, int width, int height, uint32_t color);
-void vga_bitblt(int xs, int ys, int xd, int yd, int w, int h);
-void vga_check_mode(int width, int height, int depth);
-
-/* text primitives */
-void vga_text_set_fgcol(unsigned int rgba);
-void vga_text_set_bgcol(unsigned int rgba);
-void vga_putcharxy(int x, int y, int ch,
- unsigned int fgcol, unsigned int bgcol);
-void vga_putchar(int ch);
-void vga_puts(const char *s);
-
-/*****************************************************************************/
-/* bootinfos.c : build structures needed by kernels to boot */
-void prepare_bootinfos (void *p, uint32_t memsize,
- void *cmdline, void *initrd, uint32_t initrd_size);
-void residual_build (void *p, uint32_t memsize,
- uint32_t load_base, uint32_t load_size,
- uint32_t last_alloc);
-
-/*****************************************************************************/
-/* of.c : Open-firmware emulation */
-#define OF_NAMELEN_MAX 1024
-#define OF_PROPLEN_MAX 256
-
-int OF_init (void);
-int OF_register_mb (const unsigned char *model, const unsigned char **compats);
-int OF_register_cpu (const unsigned char *name, int num, uint32_t pvr,
- uint32_t min_freq, uint32_t max_freq, uint32_t bus_freq,
- uint32_t tb_freq, uint32_t reset_io);
-#if 0
-int OF_register_translations (int nb, OF_transl_t *translations);
-#endif
-uint32_t OF_claim_virt (uint32_t virt, uint32_t size, int *range);
-int OF_register_memory (uint32_t memsize, uint32_t bios_size);
-int OF_register_bootargs (const unsigned char *bootargs);
-void *OF_register_pci_host (pci_dev_t *dev, uint16_t rev, uint32_t ccode,
- uint32_t cfg_base, uint32_t cfg_len,
- uint32_t mem_base, uint32_t mem_len,
- uint32_t io_base, uint32_t io_len,
- uint32_t rbase, uint32_t rlen,
- uint16_t min_grant, uint16_t max_latency);
-void *OF_register_pci_bridge (void *parent, pci_dev_t *dev,
- uint32_t cfg_base, uint32_t cfg_len,
- uint8_t devfn, uint8_t rev, uint32_t ccode,
- uint16_t min_grant, uint16_t max_latency);
-void *OF_register_pci_device (void *parent, pci_dev_t *dev,
- uint8_t devfn, uint8_t rev, uint32_t ccode,
- uint16_t min_grant, uint16_t max_latency);
-void OF_finalize_pci_host (void *dev, int first_bus, int nb_busses);
-void OF_finalize_pci_device (void *dev, uint8_t bus, uint8_t devfn,
- uint32_t *regions, uint32_t *sizes,
- int irq_line);
-void OF_finalize_pci_macio (void *dev, uint32_t base_address, uint32_t size,
- void *private_data);
-void OF_finalize_pci_ide (void *dev,
- uint32_t io_base0, uint32_t io_base1,
- uint32_t io_base2, uint32_t io_base3);
-int OF_register_bus (const unsigned char *name, uint32_t address,
- const unsigned char *type);
-int OF_register_serial (const unsigned char *bus, const unsigned char *name,
- uint32_t io_base, int irq);
-int OF_register_stdio (const unsigned char *dev_in,
- const unsigned char *dev_out);
-void OF_vga_register (const unsigned char *name, unused uint32_t address,
- int width, int height, int depth,
- unsigned long vga_bios_addr,
- unsigned long vga_bios_size);
-void *OF_blockdev_register (void *parent, void *private,
- const unsigned char *type,
- const unsigned char *name, int devnum,
- const char *alias);
-void OF_blockdev_set_boot_device (void *disk, int partnum,
- const unsigned char *file);
-
-int OF_entry (void *p);
-int OF_client_entry (void *p);
-void RTAS_init (void);
-
-/*****************************************************************************/
-/* main.c : main BIOS code */
-/* Memory management */
-/* Memory areas */
-extern uint32_t _data_start, _data_end;
-extern uint32_t _OF_vars_start, _OF_vars_end;
-extern uint32_t _sdata_start, _sdata_end;
-extern uint32_t _ro_start, _ro_end;
-extern uint32_t _RTAS_start, _RTAS_end;
-extern uint32_t _RTAS_data_start, _RTAS_data_end;
-extern uint32_t _bss_start, _bss_end;
-extern uint32_t _ram_start;
-extern const unsigned char *BIOS_str;
-extern const unsigned char *copyright;
-void *mem_align (int align);
-void freep (void *p);
-
-/* Endian-safe memory read/write */
-static inline void put_be64 (void *addr, uint64_t l)
-{
- *(uint64_t *)addr = l;
-}
-
-static inline uint64_t get_be64 (void *addr)
-{
- return *(uint64_t *)addr;
-}
-
-static inline void put_le64 (void *addr, uint64_t l)
-{
- uint32_t *p;
-
- p = addr;
- stswap32(p, l);
- stswap32(p + 1, l >> 32);
-}
-
-static inline uint64_t get_le64 (void *addr)
-{
- uint64_t val;
- uint32_t *p;
-
- p = addr;
- val = ldswap32(p);
- val |= (uint64_t)ldswap32(p + 1) << 32;
-
- return val;
-}
-
-static inline void put_be32 (void *addr, uint32_t l)
-{
- *(uint32_t *)addr = l;
-}
-
-static inline uint32_t get_be32 (void *addr)
-{
- return *(uint32_t *)addr;
-}
-
-static inline void put_le32 (void *addr, uint32_t l)
-{
- stswap32(addr, l);
-}
-
-static inline uint32_t get_le32 (void *addr)
-{
- return ldswap32(addr);
-}
-
-static inline void put_be16 (void *addr, uint16_t l)
-{
- *(uint16_t *)addr = l;
-}
-
-static inline uint16_t get_be16 (void *addr)
-{
- return *(uint16_t *)addr;
-}
-
-static inline void put_le16 (void *addr, uint16_t l)
-{
- stswap16(addr, l);
-}
-
-static inline uint16_t get_le16 (void *addr)
-{
- return ldswap16(addr);
-}
-
-/* String functions */
-long strtol (const unsigned char *str, unsigned char **end, int base);
-
-int write_buf (const unsigned char *buf, int len);
-
-/* Misc */
-void usleep (uint32_t usec);
-void sleep (int sec);
-uint32_t crc32 (uint32_t crc, const uint8_t *p, int len);
-void set_loadinfo (void *load_base, uint32_t size);
-void set_check (int do_it);
-void check_location (const void *buf, const char *func, const char *name);
-
-static inline void pokeb (void *location, uint8_t val)
-{
-#ifdef DEBUG_BIOS
- check_location(location, __func__, "location");
-#endif
- *((uint8_t *)location) = val;
-}
-
-static inline uint8_t peekb (void *location)
-{
-#ifdef DEBUG_BIOS
- check_location(location, __func__, "location");
-#endif
- return *((uint8_t *)location);
-}
-
-static inline void pokew (void *location, uint16_t val)
-{
-#ifdef DEBUG_BIOS
- check_location(location, __func__, "location");
-#endif
- *((uint8_t *)location) = val;
-}
-
-static inline uint16_t peekw (void *location)
-{
-#ifdef DEBUG_BIOS
- check_location(location, __func__, "location");
-#endif
- return *((uint16_t *)location);
-}
-
-static inline void pokel (void *location, uint32_t val)
-{
-#ifdef DEBUG_BIOS
- check_location(location, __func__, "location");
-#endif
- *((uint32_t *)location) = val;
-}
-
-static inline uint32_t peekl (void *location)
-{
-#ifdef DEBUG_BIOS
- check_location(location, __func__, "location");
-#endif
- return *((uint32_t *)location);
-}
-
-/* Console */
-int cs_write (const unsigned char *buf, int len);
-
-#endif /* !defined (ASSEMBLY_CODE) */
-
-
-#endif /* !defined (__BIOS_H__) */