@@ -505,6 +505,7 @@ static unsigned int intel_size_cache(struct cpuinfo_x86 *c, unsigned int size)
505
505
#define TLB_DATA0_2M_4M 0x23
506
506
507
507
#define STLB_4K 0x41
508
+ #define STLB_4K_2M 0x42
508
509
509
510
static const struct _tlb_table intel_tlb_table [] = {
510
511
{ 0x01 , TLB_INST_4K , 32 , " TLB_INST 4 KByte pages, 4-way set associative" },
@@ -525,13 +526,20 @@ static const struct _tlb_table intel_tlb_table[] = {
525
526
{ 0x5b , TLB_DATA_4K_4M , 64 , " TLB_DATA 4 KByte and 4 MByte pages" },
526
527
{ 0x5c , TLB_DATA_4K_4M , 128 , " TLB_DATA 4 KByte and 4 MByte pages" },
527
528
{ 0x5d , TLB_DATA_4K_4M , 256 , " TLB_DATA 4 KByte and 4 MByte pages" },
529
+ { 0x61 , TLB_INST_4K , 48 , " TLB_INST 4 KByte pages, full associative" },
530
+ { 0x63 , TLB_DATA_1G , 4 , " TLB_DATA 1 GByte pages, 4-way set associative" },
531
+ { 0x76 , TLB_INST_2M_4M , 8 , " TLB_INST 2-MByte or 4-MByte pages, fully associative" },
528
532
{ 0xb0 , TLB_INST_4K , 128 , " TLB_INST 4 KByte pages, 4-way set associative" },
529
533
{ 0xb1 , TLB_INST_2M_4M , 4 , " TLB_INST 2M pages, 4-way, 8 entries or 4M pages, 4-way entries" },
530
534
{ 0xb2 , TLB_INST_4K , 64 , " TLB_INST 4KByte pages, 4-way set associative" },
531
535
{ 0xb3 , TLB_DATA_4K , 128 , " TLB_DATA 4 KByte pages, 4-way set associative" },
532
536
{ 0xb4 , TLB_DATA_4K , 256 , " TLB_DATA 4 KByte pages, 4-way associative" },
537
+ { 0xb5 , TLB_INST_4K , 64 , " TLB_INST 4 KByte pages, 8-way set ssociative" },
538
+ { 0xb6 , TLB_INST_4K , 128 , " TLB_INST 4 KByte pages, 8-way set ssociative" },
533
539
{ 0xba , TLB_DATA_4K , 64 , " TLB_DATA 4 KByte pages, 4-way associative" },
534
540
{ 0xc0 , TLB_DATA_4K_4M , 8 , " TLB_DATA 4 KByte and 4 MByte pages, 4-way associative" },
541
+ { 0xc1 , STLB_4K_2M , 1024 , " STLB 4 KByte and 2 MByte pages, 8-way associative" },
542
+ { 0xc2 , TLB_DATA_2M_4M , 16 , " DTLB 2 MByte/4MByte pages, 4-way associative" },
535
543
{ 0xca , STLB_4K , 512 , " STLB 4 KByte pages, 4-way associative" },
536
544
{ 0x00 , 0 , 0 }
537
545
};
@@ -557,6 +565,20 @@ static void intel_tlb_lookup(const unsigned char desc)
557
565
if (tlb_lld_4k [ENTRIES ] < intel_tlb_table [k ].entries )
558
566
tlb_lld_4k [ENTRIES ] = intel_tlb_table [k ].entries ;
559
567
break ;
568
+ case STLB_4K_2M :
569
+ if (tlb_lli_4k [ENTRIES ] < intel_tlb_table [k ].entries )
570
+ tlb_lli_4k [ENTRIES ] = intel_tlb_table [k ].entries ;
571
+ if (tlb_lld_4k [ENTRIES ] < intel_tlb_table [k ].entries )
572
+ tlb_lld_4k [ENTRIES ] = intel_tlb_table [k ].entries ;
573
+ if (tlb_lli_2m [ENTRIES ] < intel_tlb_table [k ].entries )
574
+ tlb_lli_2m [ENTRIES ] = intel_tlb_table [k ].entries ;
575
+ if (tlb_lld_2m [ENTRIES ] < intel_tlb_table [k ].entries )
576
+ tlb_lld_2m [ENTRIES ] = intel_tlb_table [k ].entries ;
577
+ if (tlb_lli_4m [ENTRIES ] < intel_tlb_table [k ].entries )
578
+ tlb_lli_4m [ENTRIES ] = intel_tlb_table [k ].entries ;
579
+ if (tlb_lld_4m [ENTRIES ] < intel_tlb_table [k ].entries )
580
+ tlb_lld_4m [ENTRIES ] = intel_tlb_table [k ].entries ;
581
+ break ;
560
582
case TLB_INST_ALL :
561
583
if (tlb_lli_4k [ENTRIES ] < intel_tlb_table [k ].entries )
562
584
tlb_lli_4k [ENTRIES ] = intel_tlb_table [k ].entries ;
@@ -602,6 +624,10 @@ static void intel_tlb_lookup(const unsigned char desc)
602
624
if (tlb_lld_4m [ENTRIES ] < intel_tlb_table [k ].entries )
603
625
tlb_lld_4m [ENTRIES ] = intel_tlb_table [k ].entries ;
604
626
break ;
627
+ case TLB_DATA_1G :
628
+ if (tlb_lld_1g [ENTRIES ] < intel_tlb_table [k ].entries )
629
+ tlb_lld_1g [ENTRIES ] = intel_tlb_table [k ].entries ;
630
+ break ;
605
631
}
606
632
}
607
633
0 commit comments