Changeset bd2933a8 in mainline


Ignore:
Timestamp:
2005-10-15T13:47:51Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0bed5d0
Parents:
b07a838
Message:

IA32 has_cpuid() inline
minor indentation fixes

Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/Makefile.inc

    rb07a838 rbd2933a8  
    4141        src/arch/context.s \
    4242        src/arch/debug/panic.s \
    43         src/arch/cpuid.s \
    4443        src/arch/delay.s \
    4544        src/arch/asm.S \
  • arch/ia32/include/cpuid.h

    rb07a838 rbd2933a8  
    3939} __attribute__ ((packed));
    4040
    41 extern int has_cpuid(void);
     41static inline __u32 has_cpuid(void)
     42{
     43        __u32 val, ret;
     44       
     45        __asm__ volatile (
     46                "pushf\n"               /* read flags */
     47                "popl %0\n"
     48                "movl %0, %1\n"
     49               
     50                "btcl $21, %1\n"        /* swap the ID bit */
     51               
     52                "pushl %1\n"            /* propagate the change into flags */
     53                "popf\n"
     54                "pushf\n"
     55                "popl %1\n"
     56               
     57                "andl $(1 << 21), %0\n" /* interrested only in ID bit */
     58                "andl $(1 << 21), %1\n"
     59                "xorl %1, %0\n"
     60                : "=r" (ret), "=r" (val)
     61        );
     62       
     63        return ret;
     64}
    4265
    4366static inline void cpuid(__u32 cmd, struct cpu_info *info)
    4467{
    45         __asm__ volatile (
    46                 "movl %4, %%eax\n"
    47                 "cpuid\n"
    48                 "movl %%eax,%0\n"
    49                 "movl %%ebx,%1\n"
    50                 "movl %%ecx,%2\n"
    51                 "movl %%edx,%3\n"
    52                 : "=m" (info->cpuid_eax), "=m" (info->cpuid_ebx), "=m" (info->cpuid_ecx), "=m" (info->cpuid_edx)
    53                 : "m" (cmd)
    54                 : "eax", "ebx", "ecx", "edx"
    55         );
     68        __asm__ volatile (
     69                "movl %4, %%eax\n"
     70                "cpuid\n"
     71               
     72                "movl %%eax, %0\n"
     73                "movl %%ebx, %1\n"
     74                "movl %%ecx, %2\n"
     75                "movl %%edx, %3\n"
     76                : "=m" (info->cpuid_eax), "=m" (info->cpuid_ebx), "=m" (info->cpuid_ecx), "=m" (info->cpuid_edx)
     77                : "m" (cmd)
     78                : "eax", "ebx", "ecx", "edx"
     79        );
    5680}
    5781
  • contrib/conf/dot.bochsrc

    rb07a838 rbd2933a8  
    131131# supported on Windows 95 and 98.
    132132#=======================================================================
    133 floppya: 1_44=SPARTAN/image.bin, status=inserted
     133floppya: 1_44=image.bin, status=inserted
    134134#floppya: 1_44=/dev/fd0, status=inserted
    135135
Note: See TracChangeset for help on using the changeset viewer.