From: David Gibson <david@gibson.dropbear.id.au>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: cormac@c-obrien.org, qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
agraf@suse.de
Subject: Re: [Qemu-devel] [PATCH 09/13] cuda.c: add defines for CUDA registers
Date: Wed, 4 Nov 2015 14:19:26 +1100 [thread overview]
Message-ID: <20151104031926.GI21954@voom.redhat.com> (raw)
In-Reply-To: <1445608598-24485-10-git-send-email-mark.cave-ayland@ilande.co.uk>
[-- Attachment #1: Type: text/plain, Size: 6588 bytes --]
On Fri, Oct 23, 2015 at 02:56:34PM +0100, Mark Cave-Ayland wrote:
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/misc/macio/cuda.c | 87 ++++++++++++++++++++++++++++++--------------------
> 1 file changed, 53 insertions(+), 34 deletions(-)
>
> diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
> index 4027713..d32afc6 100644
> --- a/hw/misc/macio/cuda.c
> +++ b/hw/misc/macio/cuda.c
> @@ -110,6 +110,24 @@
> /* CUDA returns time_t's offset from Jan 1, 1904, not 1970 */
> #define RTC_OFFSET 2082844800
>
> +/* CUDA registers */
> +#define CUDA_REG_B 0x00
> +#define CUDA_REG_A 0x01
> +#define CUDA_REG_DIRB 0x02
> +#define CUDA_REG_DIRA 0x03
> +#define CUDA_REG_T1CL 0x04
> +#define CUDA_REG_T1CH 0x05
> +#define CUDA_REG_T1LL 0x06
> +#define CUDA_REG_T1LH 0x07
> +#define CUDA_REG_T2CL 0x08
> +#define CUDA_REG_T2CH 0x09
> +#define CUDA_REG_SR 0x0a
> +#define CUDA_REG_ACR 0x0b
> +#define CUDA_REG_PCR 0x0c
> +#define CUDA_REG_IFR 0x0d
> +#define CUDA_REG_IER 0x0e
> +#define CUDA_REG_ANH 0x0f
> +
> static void cuda_update(CUDAState *s);
> static void cuda_receive_packet_from_host(CUDAState *s,
> const uint8_t *data, int len);
> @@ -226,66 +244,67 @@ static uint32_t cuda_readb(void *opaque, hwaddr addr)
>
> addr = (addr >> 9) & 0xf;
> switch(addr) {
> - case 0:
> + case CUDA_REG_B:
> val = s->b;
> break;
> - case 1:
> + case CUDA_REG_A:
> val = s->a;
> break;
> - case 2:
> + case CUDA_REG_DIRB:
> val = s->dirb;
> break;
> - case 3:
> + case CUDA_REG_DIRA:
> val = s->dira;
> break;
> - case 4:
> + case CUDA_REG_T1CL:
> val = get_counter(&s->timers[0]) & 0xff;
> s->ifr &= ~T1_INT;
> cuda_update_irq(s);
> break;
> - case 5:
> + case CUDA_REG_T1CH:
> val = get_counter(&s->timers[0]) >> 8;
> cuda_update_irq(s);
> break;
> - case 6:
> + case CUDA_REG_T1LL:
> val = s->timers[0].latch & 0xff;
> break;
> - case 7:
> + case CUDA_REG_T1LH:
> /* XXX: check this */
> val = (s->timers[0].latch >> 8) & 0xff;
> break;
> - case 8:
> + case CUDA_REG_T2CL:
> val = get_counter(&s->timers[1]) & 0xff;
> s->ifr &= ~T2_INT;
> break;
> - case 9:
> + case CUDA_REG_T2CH:
> val = get_counter(&s->timers[1]) >> 8;
> break;
> - case 10:
> + case CUDA_REG_SR:
> val = s->sr;
> s->ifr &= ~(SR_INT | SR_CLOCK_INT | SR_DATA_INT);
> cuda_update_irq(s);
> break;
> - case 11:
> + case CUDA_REG_ACR:
> val = s->acr;
> break;
> - case 12:
> + case CUDA_REG_PCR:
> val = s->pcr;
> break;
> - case 13:
> + case CUDA_REG_IFR:
> val = s->ifr;
> - if (s->ifr & s->ier)
> + if (s->ifr & s->ier) {
> val |= 0x80;
> + }
> break;
> - case 14:
> + case CUDA_REG_IER:
> val = s->ier | 0x80;
> break;
> default:
> - case 15:
> + case CUDA_REG_ANH:
> val = s->anh;
> break;
> }
> - if (addr != 13 || val != 0) {
> + if (addr != CUDA_REG_IFR || val != 0) {
> CUDA_DPRINTF("read: reg=0x%x val=%02x\n", (int)addr, val);
> }
>
> @@ -300,61 +319,61 @@ static void cuda_writeb(void *opaque, hwaddr addr, uint32_t val)
> CUDA_DPRINTF("write: reg=0x%x val=%02x\n", (int)addr, val);
>
> switch(addr) {
> - case 0:
> + case CUDA_REG_B:
> s->b = val;
> cuda_update(s);
> break;
> - case 1:
> + case CUDA_REG_A:
> s->a = val;
> break;
> - case 2:
> + case CUDA_REG_DIRB:
> s->dirb = val;
> break;
> - case 3:
> + case CUDA_REG_DIRA:
> s->dira = val;
> break;
> - case 4:
> + case CUDA_REG_T1CL:
> s->timers[0].latch = (s->timers[0].latch & 0xff00) | val;
> cuda_timer_update(s, &s->timers[0], qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL));
> break;
> - case 5:
> + case CUDA_REG_T1CH:
> s->timers[0].latch = (s->timers[0].latch & 0xff) | (val << 8);
> s->ifr &= ~T1_INT;
> set_counter(s, &s->timers[0], s->timers[0].latch);
> break;
> - case 6:
> + case CUDA_REG_T1LL:
> s->timers[0].latch = (s->timers[0].latch & 0xff00) | val;
> cuda_timer_update(s, &s->timers[0], qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL));
> break;
> - case 7:
> + case CUDA_REG_T1LH:
> s->timers[0].latch = (s->timers[0].latch & 0xff) | (val << 8);
> s->ifr &= ~T1_INT;
> cuda_timer_update(s, &s->timers[0], qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL));
> break;
> - case 8:
> + case CUDA_REG_T2CL:
> s->timers[1].latch = val;
> set_counter(s, &s->timers[1], val);
> break;
> - case 9:
> + case CUDA_REG_T2CH:
> set_counter(s, &s->timers[1], (val << 8) | s->timers[1].latch);
> break;
> - case 10:
> + case CUDA_REG_SR:
> s->sr = val;
> break;
> - case 11:
> + case CUDA_REG_ACR:
> s->acr = val;
> cuda_timer_update(s, &s->timers[0], qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL));
> cuda_update(s);
> break;
> - case 12:
> + case CUDA_REG_PCR:
> s->pcr = val;
> break;
> - case 13:
> + case CUDA_REG_IFR:
> /* reset bits */
> s->ifr &= ~val;
> cuda_update_irq(s);
> break;
> - case 14:
> + case CUDA_REG_IER:
> if (val & IER_SET) {
> /* set bits */
> s->ier |= val & 0x7f;
> @@ -365,7 +384,7 @@ static void cuda_writeb(void *opaque, hwaddr addr, uint32_t val)
> cuda_update_irq(s);
> break;
> default:
> - case 15:
> + case CUDA_REG_ANH:
> s->anh = val;
> break;
> }
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-11-04 3:43 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-23 13:56 [Qemu-devel] [PATCH 00/13] Mac OS 9 compatibility improvements (upstream rework) Mark Cave-Ayland
2015-10-23 13:56 ` [Qemu-devel] [PATCH 01/13] PPC: Allow Rc bit to be set on mtspr Mark Cave-Ayland
2015-11-03 8:22 ` Thomas Huth
2015-11-04 2:59 ` David Gibson
2015-10-23 13:56 ` [Qemu-devel] [PATCH 02/13] PPC: Fix lsxw bounds checks Mark Cave-Ayland
2015-11-03 15:23 ` Thomas Huth
2015-11-03 19:21 ` Mark Cave-Ayland
2015-11-03 21:03 ` Thomas Huth
2015-11-03 22:13 ` Mark Cave-Ayland
2015-11-04 3:01 ` David Gibson
2015-10-23 13:56 ` [Qemu-devel] [PATCH 03/13] PPC: mac99: Always add USB controller Mark Cave-Ayland
2015-11-03 15:30 ` Thomas Huth
2015-11-04 3:07 ` David Gibson
2015-10-23 13:56 ` [Qemu-devel] [PATCH 04/13] cuda.c: fix CUDA ADB error packet format Mark Cave-Ayland
2015-11-04 3:12 ` David Gibson
2015-11-04 22:53 ` Mark Cave-Ayland
2015-10-23 13:56 ` [Qemu-devel] [PATCH 05/13] cuda.c: fix CUDA_PACKET response " Mark Cave-Ayland
2015-11-04 3:15 ` David Gibson
2015-11-04 22:58 ` Mark Cave-Ayland
2015-10-23 13:56 ` [Qemu-devel] [PATCH 06/13] cuda.c: implement simple CUDA_GET_6805_ADDR command Mark Cave-Ayland
2015-11-04 3:16 ` David Gibson
2015-10-23 13:56 ` [Qemu-devel] [PATCH 07/13] cuda.c: implement dummy IIC access commands Mark Cave-Ayland
2015-11-04 3:17 ` David Gibson
2015-11-04 23:03 ` Mark Cave-Ayland
2015-10-23 13:56 ` [Qemu-devel] [PATCH 08/13] cuda.c: fix CUDA SR interrupt clearing Mark Cave-Ayland
2015-10-23 13:56 ` [Qemu-devel] [PATCH 09/13] cuda.c: add defines for CUDA registers Mark Cave-Ayland
2015-11-04 3:19 ` David Gibson [this message]
2015-10-23 13:56 ` [Qemu-devel] [PATCH 10/13] cuda.c: refactor get_tb() so that the time can be passed in Mark Cave-Ayland
2015-11-04 3:20 ` David Gibson
2015-10-23 13:56 ` [Qemu-devel] [PATCH 11/13] cuda.c: rename get_counter() state variable from s to ti for consistency Mark Cave-Ayland
2015-11-04 3:22 ` David Gibson
2015-10-23 13:56 ` [Qemu-devel] [PATCH 12/13] cuda.c: fix T2 timer and enable its interrupt Mark Cave-Ayland
2015-11-04 3:40 ` David Gibson
2015-11-04 23:25 ` Mark Cave-Ayland
2015-11-11 6:52 ` David Gibson
2015-11-11 22:34 ` Mark Cave-Ayland
2015-10-23 13:56 ` [Qemu-devel] [PATCH 13/13] cuda.c: add delay to setting of SR_INT bit Mark Cave-Ayland
2015-11-04 3:42 ` David Gibson
2015-10-30 16:48 ` [Qemu-devel] [PATCH 00/13] Mac OS 9 compatibility improvements (upstream rework) Mark Cave-Ayland
2015-11-04 3:44 ` David Gibson
2015-11-04 23:32 ` Mark Cave-Ayland
2015-11-11 2:11 ` David Gibson
2015-11-11 6:29 ` Mark Cave-Ayland
2015-11-11 6:52 ` David Gibson
2015-11-11 8:08 ` Mark Cave-Ayland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151104031926.GI21954@voom.redhat.com \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=cormac@c-obrien.org \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.