- Timestamp:
- 2005-08-30T22:11:45Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c5ae095
- Parents:
- b524f816
- Location:
- arch/amd64
- Files:
-
- 1 added
- 3 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
arch/amd64/Makefile.inc
rb524f816 r379d73f3 16 16 arch_sources = arch/dummy.s \ 17 17 arch/fpu_context.c \ 18 arch/putchar.c \19 18 arch/boot/boot.S \ 20 19 arch/boot/memmap.S \ 21 20 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 33 33 #include <config.h> 34 34 35 35 36 void asm_delay_loop(__u32 t); 36 37 … … 43 44 static inline void cpu_sleep(void) { __asm__("hlt"); }; 44 45 46 47 static 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 62 static 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 */ 79 static 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 */ 95 static 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 */ 110 static 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 45 119 #endif -
arch/amd64/src/dummy.s
rb524f816 r379d73f3 29 29 .text 30 30 31 .global memcopy32 .global memcpy33 31 .global cpu_priority_high 34 32 .global cpu_priority_low 35 33 .global cpu_priority_read 36 34 .global cpu_priority_restore 37 .global memsetb38 35 .global userspace 39 36 .global before_thread_runs_arch … … 55 52 .global asm_delay_loop 56 53 57 memcpy:58 memcopy:59 54 cpu_priority_high: 60 55 cpu_priority_low: 61 56 cpu_priority_restore: 62 57 cpu_priority_read: 63 memsetb:64 58 asm_delay_loop: 65 59 before_thread_runs_arch: -
arch/amd64/src/supplib.c
rb524f816 r379d73f3 1 1 /* 2 * Copyright (C) 2005 Martin Decky2 * Copyright (C) 2005 Ondrej Palkovsky 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 #include <putchar.h> 30 #include <arch/types.h> 29 #include <memstr.h> 31 30 31 /* TODO: Rewrite to assembler */ 32 32 33 void putchar(const char ch)33 char *memcpy(void *dst, const void *src, size_t cnt) 34 34 { 35 _memcopy(dst, src, cnt); 35 36 } 37 38 char *memcopy(void * dst, const void *src, size_t cnt) 39 { 40 _memcopy(dst, src, cnt); 41 } 42 43 void memsetw(__address dst, size_t cnt, __u16 x) 44 { 45 _memsetw(dst, cnt, x); 46 } 47 48 void 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.