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

escc.h (1331B)


      1#ifndef HW_ESCC_H
      2#define HW_ESCC_H
      3
      4#include "chardev/char-fe.h"
      5#include "chardev/char-serial.h"
      6#include "hw/sysbus.h"
      7#include "ui/input.h"
      8#include "qom/object.h"
      9
     10/* escc.c */
     11#define TYPE_ESCC "escc"
     12#define ESCC_SIZE 4
     13
     14OBJECT_DECLARE_SIMPLE_TYPE(ESCCState, ESCC)
     15
     16typedef enum {
     17    escc_chn_a, escc_chn_b,
     18} ESCCChnID;
     19
     20typedef enum {
     21    escc_serial, escc_kbd, escc_mouse,
     22} ESCCChnType;
     23
     24#define ESCC_SERIO_QUEUE_SIZE 256
     25
     26typedef struct {
     27    uint8_t data[ESCC_SERIO_QUEUE_SIZE];
     28    int rptr, wptr, count;
     29} ESCCSERIOQueue;
     30
     31#define ESCC_SERIAL_REGS 16
     32typedef struct ESCCChannelState {
     33    qemu_irq irq;
     34    uint32_t rxint, txint, rxint_under_svc, txint_under_svc;
     35    struct ESCCChannelState *otherchn;
     36    uint32_t reg;
     37    uint8_t wregs[ESCC_SERIAL_REGS], rregs[ESCC_SERIAL_REGS];
     38    ESCCSERIOQueue queue;
     39    CharBackend chr;
     40    int e0_mode, led_mode, caps_lock_mode, num_lock_mode;
     41    int disabled;
     42    int clock;
     43    uint32_t vmstate_dummy;
     44    ESCCChnID chn; /* this channel, A (base+4) or B (base+0) */
     45    ESCCChnType type;
     46    uint8_t rx, tx;
     47    QemuInputHandlerState *hs;
     48} ESCCChannelState;
     49
     50struct ESCCState {
     51    SysBusDevice parent_obj;
     52
     53    struct ESCCChannelState chn[2];
     54    uint32_t it_shift;
     55    bool bit_swap;
     56    MemoryRegion mmio;
     57    uint32_t disabled;
     58    uint32_t frequency;
     59};
     60
     61#endif