/*
  phat patch! woo -bushing
 */

#include <errno.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int fd_mem;
  unsigned int addr;
  unsigned short val;
  volatile unsigned short *flash;

  printf("Test program...\n");

  if (argc<=1) {
    printf("Usage: %s addr val\n", argv[0]);
    exit(-1);
  }

  if ((fd_mem = open("/dev/mem", O_RDWR |O_SYNC)) < 0) {
    perror("Can not open /dev/mem");
    exit(1);
  }

  flash = mmap((void *)0x00000000, 0x20000, PROT_WRITE | PROT_READ, MAP_SHARED, fd_mem, (off_t) (0x00000000));
  if (flash == MAP_FAILED) {
    perror("Error MMAP /dev/mem");
    exit(1);
  }

  sscanf(argv[1], "%i", &addr);

  printf("Setting 0x%08x is 0x%04x\n", addr, flash[addr]);
  
  munmap((void *) flash, 0x20000);
  close(fd_mem);
  return 0;
}


