Changeset 379d73f3 in mainline for arch


Ignore:
Timestamp:
2005-08-30T22:11:45Z (20 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c5ae095
Parents:
b524f816
Message:

Added putchar to AMD

Location:
arch/amd64
Files:
1 added
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • arch/amd64/Makefile.inc

    rb524f816 r379d73f3  
    1616arch_sources = arch/dummy.s \
    1717        arch/fpu_context.c \
    18         arch/putchar.c \
    1918        arch/boot/boot.S \
    2019        arch/boot/memmap.S \
    2120        arch/pm.c \
    22         arch/context.S
     21        arch/context.S \
     22        arch/drivers/ega.c \
     23        arch/supplib.c
  • arch/amd64/include/asm.h

    rb524f816 r379d73f3  
    3333#include <config.h>
    3434
     35
    3536void asm_delay_loop(__u32 t);
    3637
     
    4344static inline void cpu_sleep(void) { __asm__("hlt"); };
    4445
     46
     47static inline __u8 inb(__u16 port)
     48{
     49        __u8 out;
     50
     51        asm (
     52                "mov %0, %%dx;"
     53                "inb %%dx,%%al;"
     54                "mov %%al, %1;"
     55                :"=m"(out)
     56                :"m"(port)
     57                :"dx","al"
     58                );
     59        return out;
     60}
     61
     62static inline __u8 outb(__u16 port,__u8 b)
     63{
     64        asm (
     65                "mov %0,%%dx;"
     66                "mov %1,%%al;"
     67                "outb %%al,%%dx;"
     68                :
     69                :"m"( port), "m" (b)
     70                :"dx","al"
     71                );
     72}
     73
     74/** Set priority level low
     75 *
     76 * Enable interrupts and return previous
     77 * value of EFLAGS.
     78 */
     79static inline pri_t cpu_priority_low(void) {
     80        pri_t v;
     81        __asm__ volatile (
     82                "pushfq\n"
     83                "popq %0\n"
     84                "sti\n"
     85                : "=r" (v)
     86        );
     87        return v;
     88}
     89
     90/** Set priority level high
     91 *
     92 * Disable interrupts and return previous
     93 * value of EFLAGS.
     94 */
     95static inline pri_t cpu_priority_high(void) {
     96        pri_t v;
     97        __asm__ volatile (
     98                "pushfq\n"
     99                "popq %0\n"
     100                "cli\n"
     101                : "=r" (v)
     102                );
     103        return v;
     104}
     105
     106/** Restore priority level
     107 *
     108 * Restore EFLAGS.
     109 */
     110static inline void cpu_priority_restore(pri_t pri) {
     111        __asm__ volatile (
     112                "pushq %0\n"
     113                "popfq\n"
     114                : : "r" (pri)
     115                );
     116}
     117
     118
    45119#endif
  • arch/amd64/src/dummy.s

    rb524f816 r379d73f3  
    2929.text
    3030
    31 .global memcopy
    32 .global memcpy
    3331.global cpu_priority_high
    3432.global cpu_priority_low
    3533.global cpu_priority_read
    3634.global cpu_priority_restore
    37 .global memsetb
    3835.global userspace
    3936.global before_thread_runs_arch
     
    5552.global asm_delay_loop
    5653
    57 memcpy:
    58 memcopy:
    5954cpu_priority_high:
    6055cpu_priority_low:
    6156cpu_priority_restore:
    6257cpu_priority_read:
    63 memsetb:
    6458asm_delay_loop:
    6559before_thread_runs_arch:
  • arch/amd64/src/supplib.c

    rb524f816 r379d73f3  
    11/*
    2  * Copyright (C) 2005 Martin Decky
     2 * Copyright (C) 2005 Ondrej Palkovsky
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 #include <putchar.h>
    30 #include <arch/types.h>
     29#include <memstr.h>
    3130
     31/* TODO: Rewrite to assembler */
    3232
    33 void putchar(const char ch)
     33char *memcpy(void *dst, const void *src, size_t cnt)
    3434{
     35        _memcopy(dst, src, cnt);
    3536}
     37
     38char *memcopy(void * dst, const void *src, size_t cnt)
     39{
     40        _memcopy(dst, src, cnt);
     41}
     42
     43void memsetw(__address dst, size_t cnt, __u16 x)
     44{
     45        _memsetw(dst, cnt, x);
     46}
     47
     48void memsetb(__address dst, size_t cnt, __u8 x)
     49{
     50        _memsetb(dst, cnt, x);
     51}
     52
Note: See TracChangeset for help on using the changeset viewer.