255{
  256    UCHAR                             MinRegisterWidth;
 
  258    UART_HARDWARE_READ_INDEXED_UCHAR  ReadFunction;
  259    UART_HARDWARE_WRITE_INDEXED_UCHAR WriteFunction;
  260 
  261    MinRegisterWidth = 8;
  262 
  263    
  264    
  265    
  266    
  267 
  268    if (MemoryMapped == 
FALSE)
 
  269    {
  271        {
  272#if defined(_X86_) || defined(_AMD64_)
  273 
  275            __fallthrough;
  276 
  278            WriteFunction = WritePortWithIndex8;
  279            ReadFunction  = ReadPortWithIndex8;
  280            break;
  281 
  283            WriteFunction    = WritePortWithIndex16;
  284            ReadFunction     = ReadPortWithIndex16;
  285            MinRegisterWidth = 16;
  286            break;
  287 
  289            WriteFunction    = WritePortWithIndex32;
  290            ReadFunction     = ReadPortWithIndex32;
  291            MinRegisterWidth = 32;
  292            break;
  293 
  294            
  295            
  296            
  297 
  298#endif
  299 
  300        default:
  302        }
  303    }
  304    else
  305    {
  307        {
  309            __fallthrough;
  310 
  312            WriteFunction = WriteRegisterWithIndex8;
  313            ReadFunction  = ReadRegisterWithIndex8;
  314            break;
  315 
  317            WriteFunction    = WriteRegisterWithIndex16;
  318            ReadFunction     = ReadRegisterWithIndex16;
  319            MinRegisterWidth = 16;
  320            break;
  321 
  323            WriteFunction    = WriteRegisterWithIndex32;
  324            ReadFunction     = ReadRegisterWithIndex32;
  325            MinRegisterWidth = 32;
  326            break;
  327 
  328#if defined(_WIN64)
  329 
  331            WriteFunction    = WriteRegisterWithIndex64;
  332            ReadFunction     = ReadRegisterWithIndex64;
  333            MinRegisterWidth = 64;
  334            break;
  335 
  336#endif
  337 
  338        default:
  340        }
  341    }
  342 
  343    
  344    
  345    
  346 
  347    PowerOfTwo = ((BitWidth & (BitWidth - 1)) == 0);
  348    if ((PowerOfTwo == 
FALSE) ||
 
  349        (BitWidth < MinRegisterWidth) ||
  351    {
  353    }
  354 
  355    Port->ByteWidth = BitWidth / 8;
  356    Port->Write     = WriteFunction;
  357    Port->Read      = ReadFunction;
  359}
UCHAR BOOLEAN
Definition BasicTypes.h:39
unsigned char UCHAR
Definition BasicTypes.h:35
#define TRUE
Definition BasicTypes.h:55
#define FALSE
Definition BasicTypes.h:54
#define MAX_REGISTER_WIDTH
Definition uartio.c:32