#define UNI_DIR_ROWS   32U
 #define UNI_ROW_GLYPHS 64U
 
+#define UNI_DIR(uni)           ( (uni)                   >> 11)
+#define UNI_ROW(uni)           (((uni) & GENMASK(10, 6)) >>  6)
+#define UNI_GLYPH(uni)         ( (uni) & GENMASK( 5, 0))
+#define UNI(dir, row, glyph)   (((dir) << 11) | ((row) << 6) | (glyph))
+
 /**
  * struct uni_pagedict -- unicode directory
  *
                                glyph = p2[k];
                                if (glyph >= 0 && glyph < MAX_GLYPH
                                               && q[glyph] < 32)
-                                       q[glyph] = (i << 11) | (j << 6) | k;
+                                       q[glyph] = UNI(i, j, k);
                        }
                }
        }
        int i, n;
        u16 **p1, *p2;
 
-       n = unicode >> 11;
+       n = UNI_DIR(unicode);
        p1 = p->uni_pgdir[n];
        if (!p1) {
                p1 = p->uni_pgdir[n] = kmalloc_array(UNI_DIR_ROWS,
                        p1[i] = NULL;
        }
 
-       n = (unicode >> 6) & 0x1f;
+       n = UNI_ROW(unicode);
        p2 = p1[n];
        if (!p2) {
                p2 = p1[n] = kmalloc_array(UNI_ROW_GLYPHS, sizeof(u16), GFP_KERNEL);
                memset(p2, 0xff, UNI_ROW_GLYPHS * sizeof(u16));
        }
 
-       p2[unicode & 0x3f] = fontpos;
+       p2[UNI_GLYPH(unicode)] = fontpos;
        
        p->sum += (fontpos << 20U) + unicode;
 
                                                continue;
                                        if (ect < ct) {
                                                unilist[ect].unicode =
-                                                       (i<<11) | (j<<6) | k;
+                                                       UNI(i, j, k);
                                                unilist[ect].fontpos = *p2;
                                        }
                                        ect++;
                return -3;
 
        p = *conp->vc_uni_pagedir_loc;
-       if ((p1 = p->uni_pgdir[ucs >> 11]) &&
-           (p2 = p1[(ucs >> 6) & 0x1f]) &&
-           (h = p2[ucs & 0x3f]) < MAX_GLYPH)
+       if ((p1 = p->uni_pgdir[UNI_DIR(ucs)]) &&
+           (p2 = p1[UNI_ROW(ucs)]) &&
+           (h = p2[UNI_GLYPH(ucs)]) < MAX_GLYPH)
                return h;
 
        return -4;              /* not found */