Changeset 0ab362c in mainline for uspace/lib
- Timestamp:
- 2012-11-22T14:36:04Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e32720ff
- Parents:
- 1f7753a (diff), 0f2c80a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/lib
- Files:
-
- 1 added
- 16 edited
-
c/Makefile (modified) (1 diff)
-
c/arch/abs32le/include/ddi.h (modified) (1 diff)
-
c/arch/arm32/Makefile.common (modified) (1 diff)
-
c/arch/arm32/include/ddi.h (modified) (1 diff)
-
c/arch/ia32/include/ddi.h (modified) (6 diffs)
-
c/arch/ia64/include/ddi.h (modified) (6 diffs)
-
c/arch/ia64/src/ddi.c (modified) (2 diffs)
-
c/arch/mips32/include/ddi.h (modified) (1 diff)
-
c/arch/mips64/include/ddi.h (modified) (1 diff)
-
c/arch/ppc32/include/ddi.h (modified) (1 diff)
-
c/arch/sparc64/include/ddi.h (modified) (6 diffs)
-
c/generic/ddi.c (modified) (6 diffs)
-
c/generic/malloc.c (modified) (1 diff)
-
c/generic/pio_trace.c (added)
-
c/include/ddi.h (modified) (2 diffs)
-
c/include/macros.h (modified) (1 diff)
-
usbdev/include/usb/dev/request.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/Makefile
r1f7753a r0ab362c 145 145 generic/sort.c \ 146 146 generic/stats.c \ 147 generic/assert.c 147 generic/assert.c \ 148 generic/pio_trace.c 148 149 149 150 ifeq ($(CONFIG_RTLD),y) -
uspace/lib/c/arch/abs32le/include/ddi.h
r1f7753a r0ab362c 36 36 #include <libarch/types.h> 37 37 38 static inline void pio_write_8(ioport8_t *port, uint8_t v)38 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 39 39 { 40 40 *port = v; 41 41 } 42 42 43 static inline void pio_write_16(ioport16_t *port, uint16_t v)43 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 44 44 { 45 45 *port = v; 46 46 } 47 47 48 static inline void pio_write_32(ioport32_t *port, uint32_t v)48 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 49 49 { 50 50 *port = v; 51 51 } 52 52 53 static inline uint8_t pio_read_8(ioport8_t *port)53 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 54 54 { 55 55 return *port; 56 56 } 57 57 58 static inline uint16_t pio_read_16(ioport16_t *port)58 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 59 59 { 60 60 return *port; 61 61 } 62 62 63 static inline uint32_t pio_read_32(ioport32_t *port)63 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 64 64 { 65 65 return *port; -
uspace/lib/c/arch/arm32/Makefile.common
r1f7753a r0ab362c 29 29 30 30 BASE_LIBS += $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a 31 GCC_CFLAGS += -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -ma rch=armv4 -mapcs-frame31 GCC_CFLAGS += -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -mapcs-frame -march=$(subst _,-,$(PROCESSOR)) 32 32 33 33 ENDIANESS = LE -
uspace/lib/c/arch/arm32/include/ddi.h
r1f7753a r0ab362c 37 37 #include <libarch/types.h> 38 38 39 static inline void pio_write_8(ioport8_t *port, uint8_t v)39 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 40 40 { 41 41 *port = v; 42 42 } 43 43 44 static inline void pio_write_16(ioport16_t *port, uint16_t v)44 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 45 45 { 46 46 *port = v; 47 47 } 48 48 49 static inline void pio_write_32(ioport32_t *port, uint32_t v)49 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 50 50 { 51 51 *port = v; 52 52 } 53 53 54 static inline uint8_t pio_read_8(ioport8_t *port)54 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 55 55 { 56 56 return *port; 57 57 } 58 58 59 static inline uint16_t pio_read_16(ioport16_t *port)59 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 60 60 { 61 61 return *port; 62 62 } 63 63 64 static inline uint32_t pio_read_32(ioport32_t *port)64 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 65 65 { 66 66 return *port; -
uspace/lib/c/arch/ia32/include/ddi.h
r1f7753a r0ab362c 39 39 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024)) 40 40 41 static inline uint8_t pio_read_8(ioport8_t *port)41 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 42 42 { 43 43 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { … … 55 55 } 56 56 57 static inline uint16_t pio_read_16(ioport16_t *port)57 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 58 58 { 59 59 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { … … 71 71 } 72 72 73 static inline uint32_t pio_read_32(ioport32_t *port)73 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 74 74 { 75 75 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { … … 87 87 } 88 88 89 static inline void pio_write_8(ioport8_t *port, uint8_t val)89 static inline void arch_pio_write_8(ioport8_t *port, uint8_t val) 90 90 { 91 91 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { … … 98 98 } 99 99 100 static inline void pio_write_16(ioport16_t *port, uint16_t val)100 static inline void arch_pio_write_16(ioport16_t *port, uint16_t val) 101 101 { 102 102 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { … … 109 109 } 110 110 111 static inline void pio_write_32(ioport32_t *port, uint32_t val)111 static inline void arch_pio_write_32(ioport32_t *port, uint32_t val) 112 112 { 113 113 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { -
uspace/lib/c/arch/ia64/include/ddi.h
r1f7753a r0ab362c 50 50 (ia64_iospace_address = get_ia64_iospace_address())) 51 51 52 static inline void pio_write_8(ioport8_t *port, uint8_t v)52 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 53 53 { 54 54 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { … … 65 65 } 66 66 67 static inline void pio_write_16(ioport16_t *port, uint16_t v)67 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 68 68 { 69 69 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { … … 80 80 } 81 81 82 static inline void pio_write_32(ioport32_t *port, uint32_t v)82 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 83 83 { 84 84 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { … … 95 95 } 96 96 97 static inline uint8_t pio_read_8(ioport8_t *port)97 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 98 98 { 99 99 uint8_t v; … … 115 115 } 116 116 117 static inline uint16_t pio_read_16(ioport16_t *port)117 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 118 118 { 119 119 uint16_t v; … … 135 135 } 136 136 137 static inline uint32_t pio_read_32(ioport32_t *port)137 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 138 138 { 139 139 uint32_t v; -
uspace/lib/c/arch/ia64/src/ddi.c
r1f7753a r0ab362c 1 /* 2 * Copyright (c) 2006 Martin Decky 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * - Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * - Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * - The name of the author may not be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 1 28 #include <libarch/ddi.h> 2 29 #include <sysinfo.h> … … 12 39 return addr; 13 40 } 14 -
uspace/lib/c/arch/mips32/include/ddi.h
r1f7753a r0ab362c 37 37 #include <libarch/types.h> 38 38 39 static inline void pio_write_8(ioport8_t *port, uint8_t v)39 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 40 40 { 41 41 *port = v; 42 42 } 43 43 44 static inline void pio_write_16(ioport16_t *port, uint16_t v)44 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 45 45 { 46 46 *port = v; 47 47 } 48 48 49 static inline void pio_write_32(ioport32_t *port, uint32_t v)49 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 50 50 { 51 51 *port = v; 52 52 } 53 53 54 static inline uint8_t pio_read_8(ioport8_t *port)54 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 55 55 { 56 56 return *port; 57 57 } 58 58 59 static inline uint16_t pio_read_16(ioport16_t *port)59 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 60 60 { 61 61 return *port; 62 62 } 63 63 64 static inline uint32_t pio_read_32(ioport32_t *port)64 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 65 65 { 66 66 return *port; -
uspace/lib/c/arch/mips64/include/ddi.h
r1f7753a r0ab362c 37 37 #include <libarch/types.h> 38 38 39 static inline void pio_write_8(ioport8_t *port, uint8_t v)39 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 40 40 { 41 41 *port = v; 42 42 } 43 43 44 static inline void pio_write_16(ioport16_t *port, uint16_t v)44 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 45 45 { 46 46 *port = v; 47 47 } 48 48 49 static inline void pio_write_32(ioport32_t *port, uint32_t v)49 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 50 50 { 51 51 *port = v; 52 52 } 53 53 54 static inline uint8_t pio_read_8(ioport8_t *port)54 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 55 55 { 56 56 return *port; 57 57 } 58 58 59 static inline uint16_t pio_read_16(ioport16_t *port)59 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 60 60 { 61 61 return *port; 62 62 } 63 63 64 static inline uint32_t pio_read_32(ioport32_t *port)64 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 65 65 { 66 66 return *port; -
uspace/lib/c/arch/ppc32/include/ddi.h
r1f7753a r0ab362c 37 37 #include <libarch/types.h> 38 38 39 static inline void pio_write_8(ioport8_t *port, uint8_t v)39 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 40 40 { 41 41 *port = v; 42 42 } 43 43 44 static inline void pio_write_16(ioport16_t *port, uint16_t v)44 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 45 45 { 46 46 *port = v; 47 47 } 48 48 49 static inline void pio_write_32(ioport32_t *port, uint32_t v)49 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 50 50 { 51 51 *port = v; 52 52 } 53 53 54 static inline uint8_t pio_read_8(ioport8_t *port)54 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 55 55 { 56 56 return *port; 57 57 } 58 58 59 static inline uint16_t pio_read_16(ioport16_t *port)59 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 60 60 { 61 61 return *port; 62 62 } 63 63 64 static inline uint32_t pio_read_32(ioport32_t *port)64 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 65 65 { 66 66 return *port; -
uspace/lib/c/arch/sparc64/include/ddi.h
r1f7753a r0ab362c 45 45 } 46 46 47 static inline void pio_write_8(ioport8_t *port, uint8_t v)47 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 48 48 { 49 49 *port = v; … … 51 51 } 52 52 53 static inline void pio_write_16(ioport16_t *port, uint16_t v)53 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 54 54 { 55 55 *port = v; … … 57 57 } 58 58 59 static inline void pio_write_32(ioport32_t *port, uint32_t v)59 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 60 60 { 61 61 *port = v; … … 63 63 } 64 64 65 static inline uint8_t pio_read_8(ioport8_t *port)65 static inline uint8_t arch_pio_read_8(ioport8_t *port) 66 66 { 67 67 uint8_t rv; … … 73 73 } 74 74 75 static inline uint16_t pio_read_16(ioport16_t *port)75 static inline uint16_t arch_pio_read_16(ioport16_t *port) 76 76 { 77 77 uint16_t rv; … … 83 83 } 84 84 85 static inline uint32_t pio_read_32(ioport32_t *port)85 static inline uint32_t arch_pio_read_32(ioport32_t *port) 86 86 { 87 87 uint32_t rv; -
uspace/lib/c/generic/ddi.c
r1f7753a r0ab362c 34 34 35 35 #include <assert.h> 36 #include <atomic.h> 36 37 #include <unistd.h> 38 #include <stdio.h> 37 39 #include <errno.h> 38 40 #include <sys/types.h> … … 47 49 #include "private/libc.h" 48 50 51 49 52 /** Return unique device number. 50 53 * … … 120 123 * 121 124 */ 122 int iospace_enable(task_id_t id, void *ioaddr, unsigned longsize)123 { 124 ddi_ioarg_t arg;125 126 arg.task_id = id;127 arg.ioaddr = ioaddr;128 arg.size = size;125 static int iospace_enable(task_id_t id, void *ioaddr, size_t size) 126 { 127 const ddi_ioarg_t arg = { 128 .task_id = id, 129 .ioaddr = ioaddr, 130 .size = size 131 }; 129 132 130 133 return __SYSCALL1(SYS_IOSPACE_ENABLE, (sysarg_t) &arg); … … 136 139 * @param size Size of the I/O region. 137 140 * @param virt Virtual address for application's 138 * PIO operations. 141 * PIO operations. Can be NULL for PMIO. 139 142 * 140 143 * @return EOK on success. … … 146 149 #ifdef IO_SPACE_BOUNDARY 147 150 if (pio_addr < IO_SPACE_BOUNDARY) { 148 *virt = pio_addr; 151 if (virt) 152 *virt = pio_addr; 149 153 return iospace_enable(task_get_id(), pio_addr, size); 150 154 } 155 #else 156 (void) iospace_enable; 151 157 #endif 152 158 if (!virt) 159 return EINVAL; 160 153 161 void *phys_frame = 154 162 (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE); … … 166 174 } 167 175 176 void pio_write_8(ioport8_t *reg, uint8_t val) 177 { 178 pio_trace_log(reg, val, true); 179 arch_pio_write_8(reg, val); 180 } 181 182 void pio_write_16(ioport16_t *reg, uint16_t val) 183 { 184 pio_trace_log(reg, val, true); 185 arch_pio_write_16(reg, val); 186 } 187 188 void pio_write_32(ioport32_t *reg, uint32_t val) 189 { 190 pio_trace_log(reg, val, true); 191 arch_pio_write_32(reg, val); 192 } 193 194 uint8_t pio_read_8(const ioport8_t *reg) 195 { 196 const uint8_t val = arch_pio_read_8(reg); 197 pio_trace_log(reg, val, false); 198 return val; 199 } 200 201 uint16_t pio_read_16(const ioport16_t *reg) 202 { 203 const uint16_t val = arch_pio_read_16(reg); 204 pio_trace_log(reg, val, false); 205 return val; 206 } 207 208 uint32_t pio_read_32(const ioport32_t *reg) 209 { 210 const uint32_t val = arch_pio_read_32(reg); 211 pio_trace_log(reg, val, false); 212 return val; 213 } 214 168 215 /** Register IRQ notification. 169 216 * -
uspace/lib/c/generic/malloc.c
r1f7753a r0ab362c 289 289 size_t asize = ALIGN_UP(size, PAGE_SIZE); 290 290 void *astart = as_area_create(AS_AREA_ANY, asize, 291 AS_AREA_WRITE | AS_AREA_READ );291 AS_AREA_WRITE | AS_AREA_READ | AS_AREA_CACHEABLE); 292 292 if (astart == AS_MAP_FAILED) 293 293 return false; -
uspace/lib/c/include/ddi.h
r1f7753a r0ab362c 36 36 #define LIBC_DDI_H_ 37 37 38 #include <bool.h> 38 39 #include <sys/types.h> 40 #include <sys/time.h> 39 41 #include <abi/ddi/irq.h> 40 42 #include <task.h> … … 50 52 extern int dmamem_unmap_anonymous(void *); 51 53 52 extern int iospace_enable(task_id_t, void *, unsigned long);53 54 extern int pio_enable(void *, size_t, void **); 55 56 typedef void (*trace_fnc)(const volatile void *place, uint32_t val, 57 volatile void* base, size_t size, void *data, bool write); 58 59 extern int pio_trace_enable(void *, size_t, trace_fnc, void *); 60 extern void pio_trace_log(const volatile void *, uint32_t val, bool write); 61 extern void pio_trace_disable(void *); 62 63 extern void pio_write_8(ioport8_t *, uint8_t); 64 extern void pio_write_16(ioport16_t *, uint16_t); 65 extern void pio_write_32(ioport32_t *, uint32_t); 66 67 extern uint8_t pio_read_8(const ioport8_t *); 68 extern uint16_t pio_read_16(const ioport16_t *); 69 extern uint32_t pio_read_32(const ioport32_t *); 70 71 static inline uint8_t pio_change_8( 72 ioport8_t *reg, uint8_t val, uint8_t mask, useconds_t delay) 73 { 74 uint8_t v = pio_read_8(reg); 75 udelay(delay); 76 pio_write_8(reg, (v & ~mask) | val); 77 return v; 78 } 79 80 static inline uint16_t pio_change_16( 81 ioport16_t *reg, uint16_t val, uint16_t mask, useconds_t delay) 82 { 83 uint16_t v = pio_read_16(reg); 84 udelay(delay); 85 pio_write_16(reg, (v & ~mask) | val); 86 return v; 87 } 88 89 static inline uint32_t pio_change_32( 90 ioport32_t *reg, uint32_t val, uint32_t mask, useconds_t delay) 91 { 92 uint32_t v = pio_read_32(reg); 93 udelay(delay); 94 pio_write_32(reg, (v & ~mask) | val); 95 return v; 96 } 97 98 static inline uint8_t pio_set_8(ioport8_t *r, uint8_t v, useconds_t d) 99 { 100 return pio_change_8(r, v, 0, d); 101 } 102 static inline uint16_t pio_set_16(ioport16_t *r, uint16_t v, useconds_t d) 103 { 104 return pio_change_16(r, v, 0, d); 105 } 106 static inline uint32_t pio_set_32(ioport32_t *r, uint32_t v, useconds_t d) 107 { 108 return pio_change_32(r, v, 0, d); 109 } 110 111 static inline uint8_t pio_clear_8(ioport8_t *r, uint8_t v, useconds_t d) 112 { 113 return pio_change_8(r, 0, v, d); 114 } 115 static inline uint16_t pio_clear_16(ioport16_t *r, uint16_t v, useconds_t d) 116 { 117 return pio_change_16(r, 0, v, d); 118 } 119 static inline uint32_t pio_clear_32(ioport32_t *r, uint32_t v, useconds_t d) 120 { 121 return pio_change_32(r, 0, v, d); 122 } 54 123 55 124 extern int irq_register(int, int, int, irq_code_t *); -
uspace/lib/c/include/macros.h
r1f7753a r0ab362c 62 62 #endif 63 63 64 #define _paddname(line) PADD_ ## line ## __ 65 #define _padd(width, line) uint ## width ## _t _paddname(line) 66 #define PADD32 _padd(32, __LINE__) 67 #define PADD16 _padd(16, __LINE__) 68 #define PADD8 _padd(8, __LINE__) 69 64 70 /** @} 65 71 */ -
uspace/lib/usbdev/include/usb/dev/request.h
r1f7753a r0ab362c 93 93 uint8_t request; 94 94 /** Main parameter to the request. */ 95 union {95 union __attribute__ ((packed)) { 96 96 uint16_t value; 97 97 /* FIXME: add #ifdefs according to host endianness */ 98 struct {98 struct __attribute__ ((packed)) { 99 99 uint8_t value_low; 100 100 uint8_t value_high; … … 108 108 uint16_t length; 109 109 } __attribute__ ((packed)) usb_device_request_setup_packet_t; 110 111 int assert[(sizeof(usb_device_request_setup_packet_t) == 8) ? 1: -1]; 110 112 111 113 int usb_control_request_set(usb_pipe_t *,
Note:
See TracChangeset
for help on using the changeset viewer.
