LCOV - code coverage report
Current view: top level - zephyr/arch/x86/ia32 - sys_io.h Hit Total Coverage
Test: new.info Lines: 0 6 0.0 %
Date: 2024-12-21 18:13:37

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2015, Wind River Systems, Inc.
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : /* Implementation of sys_io.h's documented functions */
       8             : 
       9             : #ifndef ZEPHYR_INCLUDE_ARCH_X86_IA32_SYS_IO_H_
      10             : #define ZEPHYR_INCLUDE_ARCH_X86_IA32_SYS_IO_H_
      11             : 
      12             : #if !defined(_ASMLANGUAGE)
      13             : 
      14             : #include <zephyr/sys/sys_io.h>
      15             : #include <zephyr/types.h>
      16             : #include <stddef.h>
      17             : 
      18             : static ALWAYS_INLINE
      19           0 :         void sys_io_set_bit(io_port_t port, unsigned int bit)
      20             : {
      21             :         uint32_t reg = 0;
      22             : 
      23             :         __asm__ volatile("inl      %w1, %0;\n\t"
      24             :                          "btsl     %2, %0;\n\t"
      25             :                          "outl     %0, %w1;\n\t"
      26             :                          :
      27             :                          : "a" (reg), "Nd" (port), "Ir" (bit));
      28             : }
      29             : 
      30             : static ALWAYS_INLINE
      31           0 :         void sys_io_clear_bit(io_port_t port, unsigned int bit)
      32             : {
      33             :         uint32_t reg = 0;
      34             : 
      35             :         __asm__ volatile("inl      %w1, %0;\n\t"
      36             :                          "btrl     %2, %0;\n\t"
      37             :                          "outl     %0, %w1;\n\t"
      38             :                          :
      39             :                          : "a" (reg), "Nd" (port), "Ir" (bit));
      40             : }
      41             : 
      42             : static ALWAYS_INLINE
      43           0 :         int sys_io_test_bit(io_port_t port, unsigned int bit)
      44             : {
      45             :         uint32_t ret;
      46             : 
      47             :         __asm__ volatile("inl      %w1, %0\n\t"
      48             :                          "btl      %2, %0\n\t"
      49             :                          : "=a" (ret)
      50             :                          : "Nd" (port), "Ir" (bit));
      51             : 
      52             :         return (ret & 1U);
      53             : }
      54             : 
      55             : static ALWAYS_INLINE
      56           0 :         int sys_io_test_and_set_bit(io_port_t port, unsigned int bit)
      57             : {
      58             :         int ret;
      59             : 
      60             :         ret = sys_io_test_bit(port, bit);
      61             :         sys_io_set_bit(port, bit);
      62             : 
      63             :         return ret;
      64             : }
      65             : 
      66             : static ALWAYS_INLINE
      67           0 :         int sys_io_test_and_clear_bit(io_port_t port, unsigned int bit)
      68             : {
      69             :         int ret;
      70             : 
      71             :         ret = sys_io_test_bit(port, bit);
      72             :         sys_io_clear_bit(port, bit);
      73             : 
      74             :         return ret;
      75             : }
      76             : 
      77             : #endif /* _ASMLANGUAGE */
      78             : 
      79             : #endif /* ZEPHYR_INCLUDE_ARCH_X86_IA32_SYS_IO_H_ */

Generated by: LCOV version 1.14