Merge from mainline (163495:164578).
[official-gcc/graphite-test-results.git] / gcc / testsuite / gcc.c-torture / compile / pr45535.c
blob03d15a12d053fcd23e32deddba855ed444aaae0f
1 typedef struct {
2 unsigned long pmd0;
3 unsigned long pmd1;
4 } pmd_t;
5 typedef unsigned int pgd_t;
6 struct mm_struct {
7 pgd_t * pgd;
8 };
9 extern inline int pmd_bad(pmd_t pmd)
12 extern inline void pmd_clear(pmd_t * pmdp)
14 ((*pmdp).pmd0) = 0x20 | 0x00;
15 ((*pmdp).pmd1) = 0x20 | 0x00;
17 static inline void free_one_pmd(pmd_t * dir)
19 if (pmd_bad(*dir)) {
20 pmd_clear(dir);
23 static inline void free_one_pgd(pgd_t * dir)
25 int j;
26 pmd_t * pmd;
27 pmd = ((pmd_t *) ((unsigned long) (void *)(__pgd_val(dir) & (~((1UL << 12)-1)))) + (((0) >> 21) & (512 - 1)));
28 for (j = 0; j < 512 ; j++) {
29 free_one_pmd(pmd+j);
32 void clear_page_tables(struct mm_struct *mm, unsigned long first, int nr)
34 pgd_t * page_dir = mm->pgd;
35 do {
36 free_one_pgd(page_dir);
37 } while (--nr);