summaryrefslogtreecommitdiff
path: root/support/regression/tests/bug-3223.c
blob: 095e329610ccace685ba0ca97c5874b164322b84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
   bug-3223.c
   A bug in tracking of register pair hl over ldir
 */

#include <testfwk.h>

typedef unsigned long   uint32;
typedef unsigned short  addr16;
typedef unsigned short  uint16;
typedef unsigned char   uint8;

uint32* memory = 0;

void memWrite(uint32 sectorNumber){
    uint16 value = 200;
    uint32* byte51202 = memory + 02;
    *byte51202 = sectorNumber;
    memory[3]=100;
    memory[0]=value;
}

void
testBug (void)
{
    uint32 buffer[4];
    memory = buffer;
    memWrite(42);
    ASSERT(buffer[2] == 42);
    ASSERT(buffer[3] == 100);
    ASSERT(buffer[0] == 200);
}