static uint64_t strongarm_gpio_read(void *opaque, hwaddr offset,

                                    unsigned size)

{

    StrongARMGPIOInfo *s = opaque;



    switch (offset) {

    case GPDR:        /* GPIO Pin-Direction registers */

        return s->dir;



    case GPSR:        /* GPIO Pin-Output Set registers */

        DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",

                        __func__, offset);

        return s->gpsr;    /* Return last written value.  */



    case GPCR:        /* GPIO Pin-Output Clear registers */

        DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",

                        __func__, offset);

        return 31337;        /* Specified as unpredictable in the docs.  */



    case GRER:        /* GPIO Rising-Edge Detect Enable registers */

        return s->rising;



    case GFER:        /* GPIO Falling-Edge Detect Enable registers */

        return s->falling;



    case GAFR:        /* GPIO Alternate Function registers */

        return s->gafr;



    case GPLR:        /* GPIO Pin-Level registers */

        return (s->olevel & s->dir) |

               (s->ilevel & ~s->dir);



    case GEDR:        /* GPIO Edge Detect Status registers */

        return s->status;



    default:

        printf("%s: Bad offset 0x" TARGET_FMT_plx "\n", __func__, offset);

    }



    return 0;

}

static uint64_t strongarm_gpio_read(void *opaque, hwaddr offset,

                                    unsigned size)

{

    StrongARMGPIOInfo *s = opaque;



    switch (offset) {

    case GPDR:        

        return s->dir;



    case GPSR:        

        DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",

                        __func__, offset);

        return s->gpsr;    



    case GPCR:        

        DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",

                        __func__, offset);

        return 31337;        



    case GRER:        

        return s->rising;



    case GFER:        

        return s->falling;



    case GAFR:        

        return s->gafr;



    case GPLR:        

        return (s->olevel & s->dir) |

               (s->ilevel & ~s->dir);



    case GEDR:        

        return s->status;



    default:

        printf("%s: Bad offset 0x" TARGET_FMT_plx "\n", __func__, offset);

    }



    return 0;

}

        DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",                         __func__, offset);         DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",                         __func__, offset);
static uint64_t FUNC_0(void *opaque, hwaddr offset,

                                    unsigned size)

{

    StrongARMGPIOInfo *s = opaque;



    switch (offset) {

    case GPDR:        

        return s->dir;



    case GPSR:        

        DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",

                        __func__, offset);

        return s->gpsr;    



    case GPCR:        

        DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",

                        __func__, offset);

        return 31337;        



    case GRER:        

        return s->rising;



    case GFER:        

        return s->falling;



    case GAFR:        

        return s->gafr;



    case GPLR:        

        return (s->olevel & s->dir) |

               (s->ilevel & ~s->dir);



    case GEDR:        

        return s->status;



    default:

        printf("%s: Bad offset 0x" TARGET_FMT_plx "\n", __func__, offset);

    }



    return 0;

}

static uint64_t FUNC_0(void *opaque, hwaddr offset,
unsigned size)
{ StrongARMGPIOInfo *s = opaque; switch (offset) { case GPDR:
return s->dir; case GPSR:
DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",
__func__, offset); return s->gpsr; case GPCR:
DPRINTF("%s: Read from a write-only register 0x" TARGET_FMT_plx "\n",
__func__, offset); return 31337; case GRER:
return s->rising; case GFER:
return s->falling; case GAFR:
return s->gafr; case GPLR:
return (s->olevel & s->dir) |
(s->ilevel & ~s->dir); case GEDR:
return s->status; default:
printf("%s: Bad offset 0x" TARGET_FMT_plx "\n", __func__, offset); } return 0; }