*/
+static int irq;
+
static void map_for_video()
{
+ irq=di();
*( uint8_t *)0xffa9 = 8;
*( uint8_t *)0xffaa = 9;
}
{
*( uint8_t *)0xffa9 = 1;
*( uint8_t *)0xffaa = 2;
+ irqrestore(irq);
}
static uint8_t *char_addr(unsigned int y1, unsigned char x1)
err = EINVAL;
goto ret;
}
- if (arg != GFXIOC_READ){
+ if (arg != GFXIOC_READ)
c = l;
- if (uget(ptr + 2, (char *)0x5e00, c)){
- err = EFAULT;
- goto ret;
- }
+ if (uget(ptr + 2, (char *)0x5e00, c)){
+ err = EFAULT;
+ goto ret;
}
switch(arg) {
case GFXIOC_DRAW:
}
l -= 8;
if (p[0] > 191 || p[1] > 31 || p[2] > 191 || p[3] > 31 ||
- p[0] + p[2] > 191 || p[1] + p[3] > 31 ||
+ p[0] + p[2] > 192 || p[1] + p[3] > 32 ||
(p[2] * p[3]) > l) {
err = -EFAULT;
break;
}
if (arg == GFXIOC_READ) {
video_read( (char *)0x5e00 );
- if (uput( (char *)0x5e00 + 8, ptr, l)){
+ if (uput( (char *)0x5e00 + 8, ptr+10, l-2))
err = EFAULT;
- break;
- }
+ break;
}
video_write( (char *)0x5e00 );
}