This source file includes following definitions.
- main
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 #include <stdio.h>
  22 #include <stdlib.h>
  23 #include <unistd.h>
  24 
  25 
  26 #define CHIPMEM_START   0x00000000
  27 #define CHIPMEM_END     0x00200000      
  28 
  29 #define SAVEKMSG_MAGIC1 0x53415645      
  30 #define SAVEKMSG_MAGIC2 0x4B4D5347      
  31 
  32 struct savekmsg {
  33     u_long magic1;      
  34     u_long magic2;      
  35     u_long magicptr;    
  36     u_long size;
  37     char data[0];
  38 };
  39 
  40 
  41 int main(int argc, char *argv[])
  42 {
  43     u_long start = CHIPMEM_START, end = CHIPMEM_END, p;
  44     int found = 0;
  45     struct savekmsg *m = NULL;
  46 
  47     if (argc >= 2)
  48         end = strtoul(argv[1], NULL, 0);
  49     printf("Searching for SAVEKMSG magic...\n");
  50     for (p = start; p <= end-sizeof(struct savekmsg); p += 4) {
  51         m = (struct savekmsg *)p;
  52         if ((m->magic1 == SAVEKMSG_MAGIC1) && (m->magic2 == SAVEKMSG_MAGIC2) &&
  53             (m->magicptr == p)) {
  54             found = 1;
  55             break;
  56         }
  57     }
  58     if (!found)
  59         printf("Not found\n");
  60     else {
  61         printf("Found %ld bytes at 0x%08lx\n", m->size, (u_long)&m->data);
  62         puts(">>>>>>>>>>>>>>>>>>>>");
  63         fflush(stdout);
  64         write(1, &m->data, m->size);
  65         fflush(stdout);
  66         puts("<<<<<<<<<<<<<<<<<<<<");
  67     }
  68     return(0);
  69 }