Changeset bea6233 in mainline for kernel/arch/amd64/include/arch/asm.h


Ignore:
Timestamp:
2023-02-26T15:27:13Z (14 months ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7cf5ddb
Parents:
deed510
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-02-26 15:18:02)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-02-26 15:27:13)
Message:

Replace cpu_sleep() with cpu_interruptible_sleep()

The new function combines interrupt reenabling with sleep,
so that a platform can implement this sequence atomically.
This is currently done only on ia32 and amd64.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/include/arch/asm.h

    rdeed510 rbea6233  
    4343#define IO_SPACE_BOUNDARY       ((void *) (64 * 1024))
    4444
    45 _NO_TRACE static inline void cpu_sleep(void)
    46 {
    47         asm volatile (
     45/** Enables interrupts and blocks until an interrupt arrives,
     46 * atomically if possible on target architecture.
     47 * Disables interrupts again before returning to caller.
     48 */
     49_NO_TRACE static inline void cpu_interruptible_sleep()
     50{
     51        /*
     52         * On x86, "sti" enables interrupts after the next instruction.
     53         * Therefore, this sequence is guaranteed to be atomic.
     54         */
     55        asm volatile (
     56            "sti\n"
    4857            "hlt\n"
     58            "cli\n"
    4959        );
    5060}
Note: See TracChangeset for help on using the changeset viewer.