Home | History | Annotate | Line # | Download | only in asm
      1 # mach: crisv3 crisv8 crisv10 crisv32
      2 
      3 ; Check that the simulator and the program agrees on the
      4 ; value of endmem; the base point for further allocations.
      5 
      6  .include "testutils.inc"
      7  start
      8 
      9 ; First, get the end of memory by calling brk with 0 to get
     10 ; the current value.
     11  clear.d $r10
     12  movu.w 0x2d,$r9
     13  break 13
     14 
     15 ; Get one more 8192-byte page.
     16  addu.w 8192,$r10
     17 
     18 ; Save it in a (call- and) syscall-saved register.
     19  move.d $r10,$r0
     20 
     21 ; Call brk again to raise the value.
     22  movu.w 0x2d,$r9
     23  break 13
     24 
     25 ; If the simulator messed up internally, it'd have exited
     26 ; with an error at the brk call.  But, let's sanity-check
     27 ; the return-value: it should be the same as the input and
     28 ; the allocated memory should be accessible.
     29  cmp.d $r10,$r0
     30  beq 0f
     31  nop
     32 
     33 1:
     34  fail
     35 
     36 0:
     37 ; Check that we can write and read the last address on that
     38 ; page.
     39  subq 4,$r10
     40  move.d 0xbad1d101,$r12
     41  move.d $r12,[$r10]
     42  move.d [$r10],$r11
     43  cmp.d $r11,$r12
     44  bne 1b
     45  nop
     46 
     47  pass
     48