summaryrefslogtreecommitdiff
path: root/viengoos/t-guard.c
blob: ea0428d8e02225cb168c38f753c071752970128b (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
34
35
36
37
38
39
40
41
42
43
#define _L4_TEST_MAIN
#include "t-environment.h"

#include <hurd/as.h>

#include "../libhurd-mm/as-compute-gbits.h"

int output_debug = 1;

void
test (void)
{
  struct as_guard_cappage gc;

  /* untranslated, to_translate, gbits.  */

  gc = as_compute_gbits_cappage (20, 10, 10);
  assert (gc.gbits == 8);
  assert (gc.cappage_width == 2);

  /* Inserting a folio at /VG_ADDR_BITS-19.  */
  gc = as_compute_gbits_cappage (30, 11, 10);
  assert (gc.gbits == 3);
  assert (gc.cappage_width == 8);

  /* Inserting a page at /VG_ADDR_BITS-12.  */
  gc = as_compute_gbits_cappage (30, 18, 10);
  assert (gc.gbits == 3);
  assert (gc.cappage_width == 8);

  /* Inserting a page at /VG_ADDR_BITS-12.  */
  gc = as_compute_gbits_cappage (30, 18, 17);
  assert (gc.gbits == 11);
  assert (gc.cappage_width == 7);

  gc = as_compute_gbits_cappage (63, 44, 30);
  assert (gc.gbits == 28);
  assert (gc.cappage_width == 8);

  gc = as_compute_gbits_cappage (4, 4, 1);
  assert (gc.gbits == 1);
  assert (gc.cappage_width == 3);
}