cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

macfb.h (2304B)


      1/*
      2 * QEMU Motorola 680x0 Macintosh Video Card Emulation
      3 *                 Copyright (c) 2012-2018 Laurent Vivier
      4 *
      5 * some parts from QEMU G364 framebuffer Emulator.
      6 *                 Copyright (c) 2007-2011 Herve Poussineau
      7 *
      8 * This work is licensed under the terms of the GNU GPL, version 2 or later.
      9 * See the COPYING file in the top-level directory.
     10 *
     11 */
     12
     13#ifndef MACFB_H
     14#define MACFB_H
     15
     16#include "exec/memory.h"
     17#include "hw/irq.h"
     18#include "ui/console.h"
     19#include "qemu/timer.h"
     20#include "qom/object.h"
     21
     22typedef enum  {
     23    MACFB_DISPLAY_APPLE_21_COLOR = 0,
     24    MACFB_DISPLAY_APPLE_PORTRAIT = 1,
     25    MACFB_DISPLAY_APPLE_12_RGB = 2,
     26    MACFB_DISPLAY_APPLE_2PAGE_MONO = 3,
     27    MACFB_DISPLAY_NTSC_UNDERSCAN = 4,
     28    MACFB_DISPLAY_NTSC_OVERSCAN = 5,
     29    MACFB_DISPLAY_APPLE_12_MONO = 6,
     30    MACFB_DISPLAY_APPLE_13_RGB = 7,
     31    MACFB_DISPLAY_16_COLOR = 8,
     32    MACFB_DISPLAY_PAL1_UNDERSCAN = 9,
     33    MACFB_DISPLAY_PAL1_OVERSCAN = 10,
     34    MACFB_DISPLAY_PAL2_UNDERSCAN = 11,
     35    MACFB_DISPLAY_PAL2_OVERSCAN = 12,
     36    MACFB_DISPLAY_VGA = 13,
     37    MACFB_DISPLAY_SVGA = 14,
     38} MacfbDisplayType;
     39
     40typedef struct MacFbMode {
     41    uint8_t type;
     42    uint8_t depth;
     43    uint32_t mode_ctrl1;
     44    uint32_t mode_ctrl2;
     45    uint32_t width;
     46    uint32_t height;
     47    uint32_t stride;
     48    uint32_t offset;
     49} MacFbMode;
     50
     51#define MACFB_NUM_REGS      8
     52
     53typedef struct MacfbState {
     54    MemoryRegion mem_vram;
     55    MemoryRegion mem_ctrl;
     56    QemuConsole *con;
     57
     58    uint8_t *vram;
     59    uint32_t vram_bit_mask;
     60    uint32_t palette_current;
     61    uint8_t color_palette[256 * 3];
     62    uint32_t width, height; /* in pixels */
     63    uint8_t depth;
     64    uint8_t type;
     65
     66    uint32_t regs[MACFB_NUM_REGS];
     67    MacFbMode *mode;
     68
     69    uint32_t irq_state;
     70    uint32_t irq_mask;
     71    QEMUTimer *vbl_timer;
     72    qemu_irq irq;
     73} MacfbState;
     74
     75#define TYPE_MACFB "sysbus-macfb"
     76OBJECT_DECLARE_SIMPLE_TYPE(MacfbSysBusState, MACFB)
     77
     78struct MacfbSysBusState {
     79    SysBusDevice busdev;
     80
     81    MacfbState macfb;
     82};
     83
     84#define TYPE_NUBUS_MACFB "nubus-macfb"
     85OBJECT_DECLARE_TYPE(MacfbNubusState, MacfbNubusDeviceClass, NUBUS_MACFB)
     86
     87struct MacfbNubusDeviceClass {
     88    DeviceClass parent_class;
     89
     90    DeviceRealize parent_realize;
     91    DeviceUnrealize parent_unrealize;
     92};
     93
     94
     95struct MacfbNubusState {
     96    NubusDevice busdev;
     97
     98    MacfbState macfb;
     99};
    100
    101#endif