| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: pte_motorola.h,v 1.9 2023/12/27 03:03:41 thorpej Exp $ */ | | 1 | /* $NetBSD: pte_motorola.h,v 1.10 2024/01/01 22:47:58 thorpej Exp $ */ |
2 | | | 2 | |
3 | /* | | 3 | /* |
4 | * Copyright (c) 1988 University of Utah. | | 4 | * Copyright (c) 1988 University of Utah. |
5 | * Copyright (c) 1982, 1986, 1990, 1993 | | 5 | * Copyright (c) 1982, 1986, 1990, 1993 |
6 | * The Regents of the University of California. All rights reserved. | | 6 | * The Regents of the University of California. All rights reserved. |
7 | * | | 7 | * |
8 | * This code is derived from software contributed to Berkeley by | | 8 | * This code is derived from software contributed to Berkeley by |
9 | * the Systems Programming Group of the University of Utah Computer | | 9 | * the Systems Programming Group of the University of Utah Computer |
10 | * Science Department. | | 10 | * Science Department. |
11 | * | | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | | 12 | * Redistribution and use in source and binary forms, with or without |
13 | * modification, are permitted provided that the following conditions | | 13 | * modification, are permitted provided that the following conditions |
14 | * are met: | | 14 | * are met: |
| @@ -46,75 +46,83 @@ | | | @@ -46,75 +46,83 @@ |
46 | | | 46 | |
47 | /* | | 47 | /* |
48 | * m68k motorola MMU segment/page table entries | | 48 | * m68k motorola MMU segment/page table entries |
49 | */ | | 49 | */ |
50 | | | 50 | |
51 | typedef u_int st_entry_t; /* segment table entry */ | | 51 | typedef u_int st_entry_t; /* segment table entry */ |
52 | typedef u_int pt_entry_t; /* page table entry */ | | 52 | typedef u_int pt_entry_t; /* page table entry */ |
53 | | | 53 | |
54 | #define PT_ENTRY_NULL NULL | | 54 | #define PT_ENTRY_NULL NULL |
55 | #define ST_ENTRY_NULL NULL | | 55 | #define ST_ENTRY_NULL NULL |
56 | | | 56 | |
57 | #define PG_SHIFT PGSHIFT | | 57 | #define PG_SHIFT PGSHIFT |
58 | | | 58 | |
59 | #define SG_V 0x00000002 /* segment is valid */ | | 59 | /* |
60 | #define SG_NV 0x00000000 | | 60 | * "Segment" Table Entry bits, defined in terms of the 68851 bits |
61 | #define SG_PROT 0x00000004 /* access protection mask */ | | 61 | * (compatible 68040 bits noted in comments). |
62 | #define SG_RO 0x00000004 | | 62 | */ |
| | | 63 | #define SG_V DT51_SHORT /* == UTE40_RESIDENT */ |
| | | 64 | #define SG_NV DT51_INVALID /* == UTE40_INVALID */ |
| | | 65 | #define SG_RO DTE51_WP /* == UTE40_W */ |
63 | #define SG_RW 0x00000000 | | 66 | #define SG_RW 0x00000000 |
64 | #define SG_U 0x00000008 /* modified bit (68040) */ | | 67 | #define SG_PROT DTE51_WP |
65 | #define SG_FRAME ((~0) << PG_SHIFT) | | 68 | #define SG_U DTE51_U /* == UTE40_U */ |
| | | 69 | #define SG_FRAME ((~0U) << PG_SHIFT) |
66 | #define SG_ISHIFT ((PG_SHIFT << 1) - 2) /* 24 or 22 */ | | 70 | #define SG_ISHIFT ((PG_SHIFT << 1) - 2) /* 24 or 22 */ |
67 | #define SG_IMASK ((~0) << SG_ISHIFT) | | 71 | #define SG_IMASK ((~0U) << SG_ISHIFT) |
68 | #define SG_PSHIFT PG_SHIFT | | 72 | #define SG_PSHIFT PG_SHIFT |
69 | #define SG_PMASK (((~0) << SG_PSHIFT) & ~SG_IMASK) | | 73 | #define SG_PMASK (((~0U) << SG_PSHIFT) & ~SG_IMASK) |
70 | | | 74 | |
71 | /* 68040 additions */ | | 75 | /* 68040 additions */ |
72 | #define SG4_MASK1 0xfe000000 | | 76 | #define SG4_MASK1 0xfe000000U |
73 | #define SG4_SHIFT1 25 | | 77 | #define SG4_SHIFT1 25 |
74 | #define SG4_MASK2 0x01fc0000 | | 78 | #define SG4_MASK2 0x01fc0000U |
75 | #define SG4_SHIFT2 18 | | 79 | #define SG4_SHIFT2 18 |
76 | #define SG4_MASK3 (((~0) << PG_SHIFT) & ~(SG4_MASK1 | SG4_MASK2)) | | 80 | #define SG4_MASK3 (((~0U) << PG_SHIFT) & ~(SG4_MASK1 | SG4_MASK2)) |
77 | #define SG4_SHIFT3 PG_SHIFT | | 81 | #define SG4_SHIFT3 PG_SHIFT |
78 | #define SG4_ADDR1 0xfffffe00 | | 82 | #define SG4_ADDR1 0xfffffe00 |
79 | #define SG4_ADDR2 ((~0) << (20 - PG_SHIFT)) | | 83 | #define SG4_ADDR2 ((~0U) << (20 - PG_SHIFT)) |
80 | #define SG4_LEV1SIZE 128 | | 84 | #define SG4_LEV1SIZE 128 |
81 | #define SG4_LEV2SIZE 128 | | 85 | #define SG4_LEV2SIZE 128 |
82 | #define SG4_LEV3SIZE (1 << (SG4_SHIFT2 - PG_SHIFT)) /* 64 or 32 */ | | 86 | #define SG4_LEV3SIZE (1U << (SG4_SHIFT2 - PG_SHIFT)) /* 64 or 32 */ |
83 | | | 87 | |
84 | #define PG_V 0x00000001 | | 88 | /* |
85 | #define PG_NV 0x00000000 | | 89 | * Page Table Entry bits, defined in terms of the 68851 bits |
86 | #define PG_PROT 0x00000004 | | 90 | * (compatible 68040 bits noted in comments). |
87 | #define PG_U 0x00000008 | | 91 | */ |
88 | #define PG_M 0x00000010 | | 92 | #define PG_V DT51_PAGE /* == PTE40_RESIDENT */ |
89 | #define PG_W 0x00000100 | | 93 | #define PG_NV DT51_INVALID /* == PTE40_INVALID */ |
90 | #define PG_RO 0x00000004 | | 94 | #define PG_RO PTE51_WP /* == PTE40_W */ |
91 | #define PG_RW 0x00000000 | | 95 | #define PG_RW 0x00000000 |
92 | #define PG_FRAME ((~0) << PG_SHIFT) | | 96 | #define PG_PROT PG_RO |
93 | #define PG_CI 0x00000040 | | 97 | #define PG_U PTE51_U /* == PTE40_U */ |
94 | #define PG_PFNUM(x) (((x) & PG_FRAME) >> PG_SHIFT) | | 98 | #define PG_M PTE51_M /* == PTE40_M */ |
| | | 99 | #define PG_CI PTE51_CI |
| | | 100 | #define PG_W __BIT(8) /* 851 unused bit XXX040 PTE40_U0 */ |
| | | 101 | #define PG_FRAME ((~0U) << PG_SHIFT) |
| | | 102 | #define PG_PFNUM(x) (((uintptr_t)(x) & PG_FRAME) >> PG_SHIFT) |
95 | | | 103 | |
96 | /* 68040 additions */ | | 104 | /* 68040 additions */ |
97 | #define PG_CMASK 0x00000060 /* cache mode mask */ | | 105 | #define PG_CMASK PTE40_CM /* cache mode mask */ |
98 | #define PG_CWT 0x00000000 /* writethrough caching */ | | 106 | #define PG_CWT PTE40_CM_WT /* writethrough caching */ |
99 | #define PG_CCB 0x00000020 /* copyback caching */ | | 107 | #define PG_CCB PTE40_CM_CB /* copyback caching */ |
100 | #define PG_CIS 0x00000040 /* cache inhibited serialized */ | | 108 | #define PG_CIS PTE40_CM_NC_SER /* cache inhibited serialized */ |
101 | #define PG_CIN 0x00000060 /* cache inhibited nonserialized */ | | 109 | #define PG_CIN PTE40_CM_NC /* cache inhibited nonserialized */ |
102 | #define PG_SO 0x00000080 /* supervisor only */ | | 110 | #define PG_SO PTE40_S /* supervisor only */ |
103 | | | 111 | |
104 | #define M68K_STSIZE (MAXUL2SIZE * SG4_LEV2SIZE * sizeof(st_entry_t)) | | 112 | #define M68K_STSIZE (MAXUL2SIZE * SG4_LEV2SIZE * sizeof(st_entry_t)) |
105 | /* user process segment table size */ | | 113 | /* user process segment table size */ |
106 | #define M68K_MAX_PTSIZE (1 << (32 - PG_SHIFT + 2)) /* max size of UPT */ | | 114 | #define M68K_MAX_PTSIZE (1U << (32 - PG_SHIFT + 2)) /* max size of UPT */ |
107 | #define M68K_MAX_KPTSIZE (M68K_MAX_PTSIZE >> 2) /* max memory to allocate to KPT */ | | 115 | #define M68K_MAX_KPTSIZE (M68K_MAX_PTSIZE >> 2) /* max memory to allocate to KPT */ |
108 | #define M68K_PTBASE 0x10000000 /* UPT map base address */ | | 116 | #define M68K_PTBASE 0x10000000 /* UPT map base address */ |
109 | #define M68K_PTMAXSIZE 0x70000000 /* UPT map maximum size */ | | 117 | #define M68K_PTMAXSIZE 0x70000000 /* UPT map maximum size */ |
110 | | | 118 | |
111 | /* | | 119 | /* |
112 | * Kernel virtual address to page table entry and to physical address. | | 120 | * Kernel virtual address to page table entry and to physical address. |
113 | */ | | 121 | */ |
114 | | | 122 | |
115 | #ifdef cesfic | | 123 | #ifdef cesfic |
116 | #define kvtopte(va) \ | | 124 | #define kvtopte(va) \ |
117 | (&Sysmap[((unsigned)(va)) >> PGSHIFT]) | | 125 | (&Sysmap[((unsigned)(va)) >> PGSHIFT]) |
118 | #else | | 126 | #else |
119 | #define kvtopte(va) \ | | 127 | #define kvtopte(va) \ |
120 | (&Sysmap[((unsigned)(va) - VM_MIN_KERNEL_ADDRESS) >> PGSHIFT]) | | 128 | (&Sysmap[((unsigned)(va) - VM_MIN_KERNEL_ADDRESS) >> PGSHIFT]) |