summaryrefslogtreecommitdiff
path: root/qemu/hw/cuda.c
diff options
context:
space:
mode:
authorbellard <bellard>2005-02-09 00:07:08 +0000
committerbellard <bellard>2005-02-09 00:07:08 +0000
commit12c0dd62be4b3aadcf162b7e15ecc48b98519836 (patch)
tree66e81d54d8480996c4aeee0a715a18307da94324 /qemu/hw/cuda.c
parent61ac15556b7e3284787108e394a7b6100b4f4aa7 (diff)
power down support + date fix (Thayne Harbaugh)
Diffstat (limited to 'qemu/hw/cuda.c')
-rw-r--r--qemu/hw/cuda.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/qemu/hw/cuda.c b/qemu/hw/cuda.c
index c05cdeb5..b1968628 100644
--- a/qemu/hw/cuda.c
+++ b/qemu/hw/cuda.c
@@ -87,6 +87,9 @@
#define CUDA_TIMER_FREQ (4700000 / 6)
#define CUDA_ADB_POLL_FREQ 50
+/* CUDA returns time_t's offset from Jan 1, 1904, not 1970 */
+#define RTC_OFFSET 2082844800
+
typedef struct CUDATimer {
unsigned int latch;
uint16_t counter_value; /* counter value at load time */
@@ -503,7 +506,7 @@ static void cuda_receive_packet(CUDAState *s,
break;
case CUDA_GET_TIME:
/* XXX: add time support ? */
- ti = time(NULL);
+ ti = time(NULL) + RTC_OFFSET;
obuf[0] = CUDA_PACKET;
obuf[1] = 0;
obuf[2] = 0;
@@ -522,6 +525,12 @@ static void cuda_receive_packet(CUDAState *s,
obuf[1] = 0;
cuda_send_packet_to_host(s, obuf, 2);
break;
+ case CUDA_POWERDOWN:
+ obuf[0] = CUDA_PACKET;
+ obuf[1] = 0;
+ cuda_send_packet_to_host(s, obuf, 2);
+ qemu_system_shutdown_request();
+ break;
default:
break;
}