Changeset bd5f3b7 in mainline for kernel/arch
- Timestamp:
- 2011-08-21T13:07:35Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 00aece0, f1a9e87
- Parents:
- 86a34d3e (diff), a6480d5 (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:
- kernel/arch
- Files:
-
- 1 added
- 76 edited
-
abs32le/include/istate.h (modified) (1 diff)
-
abs32le/include/mm/frame.h (modified) (2 diffs)
-
abs32le/include/mm/page.h (modified) (2 diffs)
-
abs32le/src/userspace.c (modified) (1 diff)
-
amd64/include/asm.h (modified) (7 diffs)
-
amd64/include/context.h (modified) (2 diffs)
-
amd64/include/istate.h (modified) (1 diff)
-
amd64/include/mm/frame.h (modified) (2 diffs)
-
amd64/include/mm/page.h (modified) (2 diffs)
-
amd64/src/userspace.c (modified) (1 diff)
-
arm32/include/istate.h (modified) (1 diff)
-
arm32/include/mm/frame.h (modified) (2 diffs)
-
arm32/include/mm/page.h (modified) (2 diffs)
-
arm32/include/regutils.h (modified) (2 diffs)
-
arm32/src/arm32.c (modified) (1 diff)
-
arm32/src/mach/gta02/gta02.c (modified) (1 diff)
-
arm32/src/mach/integratorcp/integratorcp.c (modified) (1 diff)
-
arm32/src/mach/testarm/testarm.c (modified) (1 diff)
-
ia32/Makefile.inc (modified) (1 diff)
-
ia32/include/asm.h (modified) (9 diffs)
-
ia32/include/atomic.h (modified) (1 diff)
-
ia32/include/boot/boot.h (modified) (1 diff)
-
ia32/include/context.h (modified) (2 diffs)
-
ia32/include/cycle.h (modified) (2 diffs)
-
ia32/include/elf.h (modified) (2 diffs)
-
ia32/include/istate.h (modified) (1 diff)
-
ia32/include/mm/frame.h (modified) (2 diffs)
-
ia32/include/mm/page.h (modified) (2 diffs)
-
ia32/src/asm.S (modified) (1 diff)
-
ia32/src/boot/boot.S (modified) (10 diffs)
-
ia32/src/cpu/cpu.c (modified) (1 diff)
-
ia32/src/drivers/vesa.c (modified) (1 diff)
-
ia32/src/proc/scheduler.c (modified) (1 diff)
-
ia32/src/smp/smp.c (modified) (1 diff)
-
ia32/src/syscall.c (modified) (2 diffs)
-
ia32/src/userspace.c (modified) (1 diff)
-
ia64/include/elf.h (modified) (2 diffs)
-
ia64/include/istate.h (modified) (1 diff)
-
ia64/include/mm/frame.h (modified) (2 diffs)
-
ia64/include/mm/page.h (modified) (2 diffs)
-
ia64/include/register.h (modified) (2 diffs)
-
ia64/src/ia64.c (modified) (1 diff)
-
mips32/include/context_offset.h (modified) (1 diff)
-
mips32/include/cp0.h (modified) (2 diffs)
-
mips32/include/istate.h (modified) (1 diff)
-
mips32/include/mm/frame.h (modified) (2 diffs)
-
mips32/include/mm/page.h (modified) (2 diffs)
-
mips32/src/mips32.c (modified) (2 diffs)
-
mips64/include/context_offset.h (modified) (2 diffs)
-
mips64/include/cp0.h (modified) (1 diff)
-
mips64/include/istate.h (modified) (1 diff)
-
mips64/include/mm/frame.h (modified) (2 diffs)
-
mips64/include/mm/page.h (modified) (2 diffs)
-
mips64/src/mips64.c (modified) (2 diffs)
-
ppc32/include/asm.h (modified) (1 diff)
-
ppc32/include/context_offset.h (modified) (2 diffs)
-
ppc32/include/cpu.h (modified) (2 diffs)
-
ppc32/include/exception.h (modified) (1 diff)
-
ppc32/include/istate.h (modified) (1 diff)
-
ppc32/include/mm/frame.h (modified) (2 diffs)
-
ppc32/include/mm/page.h (modified) (2 diffs)
-
ppc32/include/msr.h (added)
-
ppc32/src/asm.S (modified) (1 diff)
-
ppc32/src/exception.S (modified) (1 diff)
-
ppc32/src/ppc32.c (modified) (1 diff)
-
sparc64/include/barrier.h (modified) (1 diff)
-
sparc64/include/elf.h (modified) (2 diffs)
-
sparc64/include/istate.h (modified) (1 diff)
-
sparc64/include/mm/page.h (modified) (2 diffs)
-
sparc64/include/mm/sun4u/frame.h (modified) (2 diffs)
-
sparc64/include/mm/sun4v/frame.h (modified) (2 diffs)
-
sparc64/include/mm/sun4v/page.h (modified) (2 diffs)
-
sparc64/include/sun4v/regdef.h (modified) (2 diffs)
-
sparc64/src/drivers/scr.c (modified) (1 diff)
-
sparc64/src/smp/sun4u/smp.c (modified) (1 diff)
-
sparc64/src/smp/sun4v/smp.c (modified) (1 diff)
-
sparc64/src/sun4v/start.S (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/abs32le/include/istate.h
r86a34d3e rbd5f3b7 36 36 #define KERN_abs32le_ISTATE_H_ 37 37 38 #include <trace.h> 39 38 40 #ifdef KERNEL 39 41 40 #include <typedefs.h>41 42 #include <verify.h> 42 #include <trace.h>43 43 44 44 #else /* KERNEL */ 45 45 46 #include <sys/types.h>47 48 #define NO_TRACE49 46 #define REQUIRES_EXTENT_MUTABLE(arg) 50 47 #define WRITES(arg) -
kernel/arch/abs32le/include/mm/frame.h
r86a34d3e rbd5f3b7 39 39 #define FRAME_SIZE (1 << FRAME_WIDTH) 40 40 41 #ifdef KERNEL42 43 41 #include <typedefs.h> 44 42 … … 46 44 extern void physmem_print(void); 47 45 48 #endif /* KERNEL */49 50 46 #endif 51 47 -
kernel/arch/abs32le/include/mm/page.h
r86a34d3e rbd5f3b7 41 41 #define PAGE_WIDTH FRAME_WIDTH 42 42 #define PAGE_SIZE FRAME_SIZE 43 44 #ifdef KERNEL45 43 46 44 #define KA2PA(x) (((uintptr_t) (x)) - UINT32_C(0x80000000)) … … 178 176 extern void page_fault(unsigned int, istate_t *); 179 177 180 #endif /* KERNEL */181 182 178 #endif 183 179 -
kernel/arch/abs32le/src/userspace.c
r86a34d3e rbd5f3b7 36 36 #include <typedefs.h> 37 37 #include <arch.h> 38 #include < proc/uarg.h>38 #include <abi/proc/uarg.h> 39 39 #include <mm/as.h> 40 41 40 42 41 void userspace(uspace_arg_t *kernel_uarg) -
kernel/arch/amd64/include/asm.h
r86a34d3e rbd5f3b7 41 41 #include <trace.h> 42 42 43 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024)) 44 43 45 /** Return base address of current stack. 44 46 * … … 87 89 NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port) 88 90 { 89 uint8_t val; 90 91 asm volatile ( 92 "inb %w[port], %b[val]\n" 93 : [val] "=a" (val) 94 : [port] "d" (port) 95 ); 96 97 return val; 91 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { 92 uint8_t val; 93 94 asm volatile ( 95 "inb %w[port], %b[val]\n" 96 : [val] "=a" (val) 97 : [port] "d" (port) 98 ); 99 100 return val; 101 } else 102 return (uint8_t) *port; 98 103 } 99 104 … … 108 113 NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port) 109 114 { 110 uint16_t val; 111 112 asm volatile ( 113 "inw %w[port], %w[val]\n" 114 : [val] "=a" (val) 115 : [port] "d" (port) 116 ); 117 118 return val; 115 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { 116 uint16_t val; 117 118 asm volatile ( 119 "inw %w[port], %w[val]\n" 120 : [val] "=a" (val) 121 : [port] "d" (port) 122 ); 123 124 return val; 125 } else 126 return (uint16_t) *port; 119 127 } 120 128 … … 129 137 NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port) 130 138 { 131 uint32_t val; 132 133 asm volatile ( 134 "inl %w[port], %[val]\n" 135 : [val] "=a" (val) 136 : [port] "d" (port) 137 ); 138 139 return val; 139 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { 140 uint32_t val; 141 142 asm volatile ( 143 "inl %w[port], %[val]\n" 144 : [val] "=a" (val) 145 : [port] "d" (port) 146 ); 147 148 return val; 149 } else 150 return (uint32_t) *port; 140 151 } 141 152 … … 150 161 NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t val) 151 162 { 152 asm volatile ( 153 "outb %b[val], %w[port]\n" 154 :: [val] "a" (val), 155 [port] "d" (port) 156 ); 163 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { 164 asm volatile ( 165 "outb %b[val], %w[port]\n" 166 :: [val] "a" (val), [port] "d" (port) 167 ); 168 } else 169 *port = val; 157 170 } 158 171 … … 167 180 NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t val) 168 181 { 169 asm volatile ( 170 "outw %w[val], %w[port]\n" 171 :: [val] "a" (val), 172 [port] "d" (port) 173 ); 182 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { 183 asm volatile ( 184 "outw %w[val], %w[port]\n" 185 :: [val] "a" (val), [port] "d" (port) 186 ); 187 } else 188 *port = val; 174 189 } 175 190 … … 184 199 NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t val) 185 200 { 186 asm volatile ( 187 "outl %[val], %w[port]\n" 188 :: [val] "a" (val), 189 [port] "d" (port) 190 ); 201 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { 202 asm volatile ( 203 "outl %[val], %w[port]\n" 204 :: [val] "a" (val), [port] "d" (port) 205 ); 206 } else 207 *port = val; 191 208 } 192 209 -
kernel/arch/amd64/include/context.h
r86a34d3e rbd5f3b7 36 36 #define KERN_amd64_CONTEXT_H_ 37 37 38 #ifdef KERNEL39 40 38 #include <typedefs.h> 41 39 … … 52 50 (c)->rbp = 0; \ 53 51 } while (0) 54 55 #endif /* KERNEL */56 52 57 53 /* We include only registers that must be preserved -
kernel/arch/amd64/include/istate.h
r86a34d3e rbd5f3b7 36 36 #define KERN_amd64_ISTATE_H_ 37 37 38 #ifdef KERNEL39 40 #include <typedefs.h>41 38 #include <trace.h> 42 43 #else /* KERNEL */44 45 #include <sys/types.h>46 47 #define NO_TRACE48 49 #endif /* KERNEL */50 39 51 40 /** This is passed to interrupt handlers */ -
kernel/arch/amd64/include/mm/frame.h
r86a34d3e rbd5f3b7 39 39 #define FRAME_SIZE (1 << FRAME_WIDTH) 40 40 41 #ifdef KERNEL42 41 #ifndef __ASM__ 43 42 … … 49 48 50 49 #endif /* __ASM__ */ 51 #endif /* KERNEL */52 50 53 51 #endif -
kernel/arch/amd64/include/mm/page.h
r86a34d3e rbd5f3b7 50 50 #define PAGE_WIDTH FRAME_WIDTH 51 51 #define PAGE_SIZE FRAME_SIZE 52 53 #ifdef KERNEL54 52 55 53 #ifndef __ASM__ … … 231 229 #endif /* __ASM__ */ 232 230 233 #endif /* KERNEL */234 235 231 #endif 236 232 -
kernel/arch/amd64/src/userspace.c
r86a34d3e rbd5f3b7 38 38 #include <typedefs.h> 39 39 #include <arch.h> 40 #include < proc/uarg.h>40 #include <abi/proc/uarg.h> 41 41 #include <mm/as.h> 42 43 42 44 43 /** Enter userspace -
kernel/arch/arm32/include/istate.h
r86a34d3e rbd5f3b7 35 35 #define KERN_arm32_ISTATE_H_ 36 36 37 #include <trace.h> 38 39 #ifdef KERNEL 40 37 41 #include <arch/regutils.h> 38 42 39 #ifdef KERNEL 40 #include <typedefs.h> 41 #include <trace.h> 42 #else 43 #include <sys/types.h> 44 #define NO_TRACE 45 #endif 43 #else /* KERNEL */ 44 45 #include <libarch/regutils.h> 46 47 #endif /* KERNEL */ 46 48 47 49 /** Struct representing CPU state saved when an exception occurs. */ -
kernel/arch/arm32/include/mm/frame.h
r86a34d3e rbd5f3b7 40 40 #define FRAME_SIZE (1 << FRAME_WIDTH) 41 41 42 #ifdef KERNEL43 42 #ifndef __ASM__ 44 43 … … 69 68 70 69 #endif /* __ASM__ */ 71 #endif /* KERNEL */72 70 73 71 #endif -
kernel/arch/arm32/include/mm/page.h
r86a34d3e rbd5f3b7 52 52 # define PA2KA(x) ((x) + 0x80000000) 53 53 #endif 54 55 #ifdef KERNEL56 54 57 55 /* Number of entries in each level. */ … … 320 318 #endif /* __ASM__ */ 321 319 322 #endif /* KERNEL */323 324 320 #endif 325 321 -
kernel/arch/arm32/include/regutils.h
r86a34d3e rbd5f3b7 30 30 * @{ 31 31 */ 32 /** 32 /** 33 33 * @file 34 34 * @brief Utilities for convenient manipulation with ARM registers. … … 38 38 #define KERN_arm32_REGUTILS_H_ 39 39 40 #define STATUS_REG_IRQ_DISABLED_BIT (1 << 7)41 #define STATUS_REG_MODE_MASK 0x1f40 #define STATUS_REG_IRQ_DISABLED_BIT (1 << 7) 41 #define STATUS_REG_MODE_MASK 0x1f 42 42 43 #define CP15_R1_HIGH_VECTORS_BIT (1 << 13) 44 43 #define CP15_R1_HIGH_VECTORS_BIT (1 << 13) 45 44 46 45 /* ARM Processor Operation Modes */ 47 #define USER_MODE 0x1048 #define FIQ_MODE 0x1149 #define IRQ_MODE0x1250 #define SUPERVISOR_MODE0x1351 #define ABORT_MODE0x1752 #define UNDEFINED_MODE0x1b53 #define SYSTEM_MODE0x1f46 #define USER_MODE 0x10 47 #define FIQ_MODE 0x11 48 #define IRQ_MODE 0x12 49 #define SUPERVISOR_MODE 0x13 50 #define ABORT_MODE 0x17 51 #define UNDEFINED_MODE 0x1b 52 #define SYSTEM_MODE 0x1f 54 53 55 54 /* [CS]PRS manipulation macros */ 56 #define GEN_STATUS_READ(nm,reg) \ 57 static inline uint32_t nm## _status_reg_read(void) \ 58 { \ 59 uint32_t retval; \ 60 asm volatile( \ 61 "mrs %[retval], " #reg \ 62 : [retval] "=r" (retval) \ 63 ); \ 64 return retval; \ 65 } 55 #define GEN_STATUS_READ(nm, reg) \ 56 static inline uint32_t nm## _status_reg_read(void) \ 57 { \ 58 uint32_t retval; \ 59 \ 60 asm volatile ( \ 61 "mrs %[retval], " #reg \ 62 : [retval] "=r" (retval) \ 63 ); \ 64 \ 65 return retval; \ 66 } 66 67 67 #define GEN_STATUS_WRITE(nm, reg,fieldname, field) \68 static inline void nm## _status_reg_ ##fieldname## _write(uint32_t value) \69 { \70 asm volatile( \71 "msr " #reg "_" #field ", %[value]" \72 :: [value] "r" (value) \73 ); \74 }68 #define GEN_STATUS_WRITE(nm, reg, fieldname, field) \ 69 static inline void nm## _status_reg_ ##fieldname## _write(uint32_t value) \ 70 { \ 71 asm volatile ( \ 72 "msr " #reg "_" #field ", %[value]" \ 73 :: [value] "r" (value) \ 74 ); \ 75 } 75 76 77 /** Return the value of CPSR (Current Program Status Register). */ 78 GEN_STATUS_READ(current, cpsr); 76 79 77 /** Returns the value of CPSR (Current Program Status Register). */ 78 GEN_STATUS_READ(current, cpsr) 79 80 81 /** Sets control bits of CPSR. */ 80 /** Set control bits of CPSR. */ 82 81 GEN_STATUS_WRITE(current, cpsr, control, c); 83 82 84 85 /** Returns the value of SPSR (Saved Program Status Register). */ 86 GEN_STATUS_READ(saved, spsr) 87 83 /** Return the value of SPSR (Saved Program Status Register). */ 84 GEN_STATUS_READ(saved, spsr); 88 85 89 86 #endif -
kernel/arch/arm32/src/arm32.c
r86a34d3e rbd5f3b7 37 37 #include <config.h> 38 38 #include <genarch/fb/fb.h> 39 #include < genarch/fb/visuals.h>39 #include <abi/fb/visuals.h> 40 40 #include <sysinfo/sysinfo.h> 41 41 #include <console/console.h> -
kernel/arch/arm32/src/mach/gta02/gta02.c
r86a34d3e rbd5f3b7 39 39 #include <mm/page.h> 40 40 #include <genarch/fb/fb.h> 41 #include < genarch/fb/visuals.h>41 #include <abi/fb/visuals.h> 42 42 #include <genarch/drivers/s3c24xx_uart/s3c24xx_uart.h> 43 43 #include <genarch/drivers/s3c24xx_irqc/s3c24xx_irqc.h> -
kernel/arch/arm32/src/mach/integratorcp/integratorcp.c
r86a34d3e rbd5f3b7 48 48 #include <arch/mach/integratorcp/integratorcp.h> 49 49 #include <genarch/fb/fb.h> 50 #include < genarch/fb/visuals.h>50 #include <abi/fb/visuals.h> 51 51 #include <ddi/ddi.h> 52 52 #include <print.h> -
kernel/arch/arm32/src/mach/testarm/testarm.c
r86a34d3e rbd5f3b7 38 38 #include <mm/page.h> 39 39 #include <genarch/fb/fb.h> 40 #include < genarch/fb/visuals.h>40 #include <abi/fb/visuals.h> 41 41 #include <genarch/drivers/dsrln/dsrlnin.h> 42 42 #include <genarch/drivers/dsrln/dsrlnout.h> -
kernel/arch/ia32/Makefile.inc
r86a34d3e rbd5f3b7 43 43 ## Accepted CPUs 44 44 # 45 46 ifeq ($(PROCESSOR),i486) 47 CMN2 = -march=i486 48 endif 45 49 46 50 ifeq ($(PROCESSOR),athlon_xp) -
kernel/arch/ia32/include/asm.h
r86a34d3e rbd5f3b7 101 101 GEN_WRITE_REG(dr7) 102 102 103 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024)) 104 103 105 /** Byte to port 104 106 * … … 111 113 NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t val) 112 114 { 113 asm volatile ( 114 "outb %b[val], %w[port]\n" 115 :: [val] "a" (val), 116 [port] "d" (port) 117 ); 115 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { 116 asm volatile ( 117 "outb %b[val], %w[port]\n" 118 :: [val] "a" (val), [port] "d" (port) 119 ); 120 } else 121 *port = val; 118 122 } 119 123 … … 128 132 NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t val) 129 133 { 130 asm volatile ( 131 "outw %w[val], %w[port]\n" 132 :: [val] "a" (val), 133 [port] "d" (port) 134 ); 134 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { 135 asm volatile ( 136 "outw %w[val], %w[port]\n" 137 :: [val] "a" (val), [port] "d" (port) 138 ); 139 } else 140 *port = val; 135 141 } 136 142 … … 145 151 NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t val) 146 152 { 147 asm volatile ( 148 "outl %[val], %w[port]\n" 149 :: [val] "a" (val), 150 [port] "d" (port) 151 ); 153 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { 154 asm volatile ( 155 "outl %[val], %w[port]\n" 156 :: [val] "a" (val), [port] "d" (port) 157 ); 158 } else 159 *port = val; 152 160 } 153 161 … … 162 170 NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port) 163 171 { 164 uint8_t val; 165 166 asm volatile ( 167 "inb %w[port], %b[val]\n" 168 : [val] "=a" (val) 169 : [port] "d" (port) 170 ); 171 172 return val; 172 if (((void *)port) < IO_SPACE_BOUNDARY) { 173 uint8_t val; 174 175 asm volatile ( 176 "inb %w[port], %b[val]\n" 177 : [val] "=a" (val) 178 : [port] "d" (port) 179 ); 180 181 return val; 182 } else 183 return (uint8_t) *port; 173 184 } 174 185 … … 183 194 NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port) 184 195 { 185 uint16_t val; 186 187 asm volatile ( 188 "inw %w[port], %w[val]\n" 189 : [val] "=a" (val) 190 : [port] "d" (port) 191 ); 192 193 return val; 196 if (((void *)port) < IO_SPACE_BOUNDARY) { 197 uint16_t val; 198 199 asm volatile ( 200 "inw %w[port], %w[val]\n" 201 : [val] "=a" (val) 202 : [port] "d" (port) 203 ); 204 205 return val; 206 } else 207 return (uint16_t) *port; 194 208 } 195 209 … … 204 218 NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port) 205 219 { 206 uint32_t val; 207 208 asm volatile ( 209 "inl %w[port], %[val]\n" 210 : [val] "=a" (val) 211 : [port] "d" (port) 212 ); 213 214 return val; 220 if (((void *)port) < IO_SPACE_BOUNDARY) { 221 uint32_t val; 222 223 asm volatile ( 224 "inl %w[port], %[val]\n" 225 : [val] "=a" (val) 226 : [port] "d" (port) 227 ); 228 229 return val; 230 } else 231 return (uint32_t) *port; 215 232 } 216 233 … … 311 328 } 312 329 330 #ifndef PROCESSOR_i486 331 313 332 /** Write to MSR */ 314 333 NO_TRACE static inline void write_msr(uint32_t msr, uint64_t value) … … 335 354 return ((uint64_t) dx << 32) | ax; 336 355 } 356 357 #endif /* PROCESSOR_i486 */ 337 358 338 359 -
kernel/arch/ia32/include/atomic.h
r86a34d3e rbd5f3b7 121 121 asm volatile ( 122 122 "0:\n" 123 #ifndef PROCESSOR_i486 123 124 "pause\n" /* Pentium 4's HT love this instruction */ 125 #endif 124 126 "mov %[count], %[tmp]\n" 125 127 "testl %[tmp], %[tmp]\n" -
kernel/arch/ia32/include/boot/boot.h
r86a34d3e rbd5f3b7 43 43 #define MULTIBOOT_HEADER_FLAGS 0x00010003 44 44 45 #define MULTIBOOT_LOADER_MAGIC 0x2BADB002 46 45 47 #ifndef __ASM__ 46 48 -
kernel/arch/ia32/include/context.h
r86a34d3e rbd5f3b7 36 36 #define KERN_ia32_CONTEXT_H_ 37 37 38 #ifdef KERNEL39 40 38 #include <typedefs.h> 41 39 … … 57 55 } while (0) 58 56 59 #endif /* KERNEL */60 61 57 /* 62 58 * Only save registers that must be preserved across -
kernel/arch/ia32/include/cycle.h
r86a34d3e rbd5f3b7 40 40 NO_TRACE static inline uint64_t get_cycle(void) 41 41 { 42 #ifdef PROCESSOR_i486 43 return 0; 44 #else 42 45 uint64_t v; 43 46 … … 48 51 49 52 return v; 53 #endif 50 54 } 51 55 -
kernel/arch/ia32/include/elf.h
r86a34d3e rbd5f3b7 27 27 */ 28 28 29 /** @addtogroup ia32 29 /** @addtogroup ia32 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ia32_ELF_H_ 37 37 38 #define ELF_MACHINEEM_38639 #define ELF_DATA_ENCODING ELFDATA2LSB40 #define ELF_CLASS ELFCLASS3238 #define ELF_MACHINE EM_386 39 #define ELF_DATA_ENCODING ELFDATA2LSB 40 #define ELF_CLASS ELFCLASS32 41 41 42 42 #endif -
kernel/arch/ia32/include/istate.h
r86a34d3e rbd5f3b7 36 36 #define KERN_ia32_ISTATE_H_ 37 37 38 #ifdef KERNEL39 40 #include <typedefs.h>41 38 #include <trace.h> 42 43 #else /* KERNEL */44 45 #include <sys/types.h>46 47 #define NO_TRACE48 49 #endif /* KERNEL */50 39 51 40 typedef struct istate { -
kernel/arch/ia32/include/mm/frame.h
r86a34d3e rbd5f3b7 39 39 #define FRAME_SIZE (1 << FRAME_WIDTH) 40 40 41 #ifdef KERNEL42 41 #ifndef __ASM__ 43 42 … … 50 49 51 50 #endif /* __ASM__ */ 52 #endif /* KERNEL */53 51 54 52 #endif -
kernel/arch/ia32/include/mm/page.h
r86a34d3e rbd5f3b7 42 42 #define PAGE_SIZE FRAME_SIZE 43 43 44 #ifdef KERNEL45 46 44 #ifndef __ASM__ 47 45 … … 201 199 #endif /* __ASM__ */ 202 200 203 #endif /* KERNEL */204 205 201 #endif 206 202 -
kernel/arch/ia32/src/asm.S
r86a34d3e rbd5f3b7 405 405 xorl %eax, %eax 406 406 cmpl $(GDT_SELECTOR(KTEXT_DES)), ISTATE_OFFSET_CS(%esp) 407 #ifdef PROCESSOR_i486 408 jz 0f 409 movl %eax, %ebp 410 0: 411 #else 407 412 cmovnzl %eax, %ebp 413 #endif 408 414 409 415 movl %ebp, ISTATE_OFFSET_EBP_FRAME(%esp) -
kernel/arch/ia32/src/boot/boot.S
r86a34d3e rbd5f3b7 97 97 pm_status $status_prot 98 98 99 #include "vesa_prot.inc" 100 101 #ifndef PROCESSOR_i486 102 103 pm_status $status_prot2 104 99 105 movl $(INTEL_CPUID_LEVEL), %eax 100 106 cpuid … … 105 111 cpuid 106 112 bt $(INTEL_PSE), %edx 107 jc pse_supported 113 jnc pse_unsupported 114 115 /* Map kernel and turn paging on */ 116 pm_status $status_pse 117 call map_kernel_pse 118 jmp stack_init 119 120 #endif /* PROCESSOR_i486 */ 108 121 109 122 pse_unsupported: 110 123 111 pm_error $err_pse 112 113 pse_supported: 114 115 #include "vesa_prot.inc" 116 117 /* Map kernel and turn paging on */ 118 call map_kernel 124 /* Map kernel and turn paging on */ 125 pm_status $status_non_pse 126 call map_kernel 127 128 stack_init: 119 129 120 130 /* Create the first stack frame */ … … 122 132 movl %esp, %ebp 123 133 124 pm2_status $status_prot 2134 pm2_status $status_prot3 125 135 126 136 /* Call arch_pre_main(grub_eax, grub_ebx) */ … … 140 150 jmp hlt0 141 151 142 /** Setup mapping for the kernel .152 /** Setup mapping for the kernel (PSE variant) 143 153 * 144 154 * Setup mapping for both the unmapped and mapped sections … … 146 156 * 147 157 */ 148 .global map_kernel 149 map_kernel: 158 .global map_kernel_pse 159 map_kernel_pse: 160 /* Paging features */ 150 161 movl %cr4, %ecx 151 162 orl $(1 << 4), %ecx /* PSE on */ … … 158 169 xorl %ebx, %ebx 159 170 160 floop :171 floop_pse: 161 172 movl $((1 << 7) | (1 << 1) | (1 << 0)), %eax 162 173 orl %ebx, %eax … … 169 180 incl %ecx 170 181 cmpl $512, %ecx 171 jl floop 182 jl floop_pse 172 183 173 184 movl %esi, %cr3 … … 177 188 movl %ebx, %cr0 178 189 ret 190 191 /** Setup mapping for the kernel (non-PSE variant). 192 * 193 * Setup mapping for both the unmapped and mapped sections 194 * of the kernel. For simplicity, we map the entire 4G space. 195 * 196 */ 197 .global map_kernel 198 map_kernel: 199 /* Paging features */ 200 movl %cr4, %ecx 201 andl $(~(1 << 5)), %ecx /* PAE off */ 202 movl %ecx, %cr4 203 204 call calc_kernel_end 205 call find_mem_for_pt 206 207 mov kernel_end, %esi 208 mov free_area, %ecx 209 210 cmpl %esi, %ecx 211 jbe use_kernel_end 212 213 mov %ecx, %esi 214 215 /* Align address down to 4k */ 216 andl $(~4095), %esi 217 218 use_kernel_end: 219 220 /* Align address to 4k */ 221 addl $4095, %esi 222 andl $(~4095), %esi 223 224 /* Allocate space for page tables */ 225 movl %esi, pt_loc 226 movl $ballocs, %edi 227 andl $0x7fffffff, %edi 228 229 movl %esi, (%edi) 230 addl $4, %edi 231 movl $(2 * 1024 * 1024), (%edi) 232 233 /* Fill page tables */ 234 xorl %ecx, %ecx 235 xorl %ebx, %ebx 236 237 floop_pt: 238 movl $((1 << 1) | (1 << 0)), %eax 239 orl %ebx, %eax 240 movl %eax, (%esi, %ecx, 4) 241 addl $(4 * 1024), %ebx 242 243 incl %ecx 244 cmpl $(512 * 1024), %ecx 245 246 jl floop_pt 247 248 /* Fill page directory */ 249 movl $(page_directory + 0), %esi 250 movl $(page_directory + 2048), %edi 251 xorl %ecx, %ecx 252 movl pt_loc, %ebx 253 254 floop: 255 movl $((1 << 1) | (1 << 0)), %eax 256 orl %ebx, %eax 257 258 /* Mapping 0x00000000 + %ecx * 4M => 0x00000000 + %ecx * 4M */ 259 movl %eax, (%esi, %ecx, 4) 260 261 /* Mapping 0x80000000 + %ecx * 4M => 0x00000000 + %ecx * 4M */ 262 movl %eax, (%edi, %ecx, 4) 263 addl $(4 * 1024), %ebx 264 265 incl %ecx 266 cmpl $512, %ecx 267 268 jl floop 269 270 movl %esi, %cr3 271 272 movl %cr0, %ebx 273 orl $(1 << 31), %ebx /* paging on */ 274 movl %ebx, %cr0 275 276 ret 277 278 /** Calculate unmapped address of the end of the kernel. */ 279 calc_kernel_end: 280 movl $hardcoded_load_address, %edi 281 andl $0x7fffffff, %edi 282 movl (%edi), %esi 283 andl $0x7fffffff, %esi 284 285 movl $hardcoded_ktext_size, %edi 286 andl $0x7fffffff, %edi 287 addl (%edi), %esi 288 andl $0x7fffffff, %esi 289 290 movl $hardcoded_kdata_size, %edi 291 andl $0x7fffffff, %edi 292 addl (%edi), %esi 293 andl $0x7fffffff, %esi 294 movl %esi, kernel_end 295 296 ret 297 298 /** Find free 2M (+4k for alignment) region where to store page tables */ 299 find_mem_for_pt: 300 /* Check if multiboot info is present */ 301 cmpl $MULTIBOOT_LOADER_MAGIC, grub_eax 302 je check_multiboot_map 303 304 ret 305 306 check_multiboot_map: 307 308 /* Copy address of the multiboot info to ebx */ 309 movl grub_ebx, %ebx 310 311 /* Check if memory map flag is present */ 312 movl (%ebx), %edx 313 andl $(1 << 6), %edx 314 jnz use_multiboot_map 315 316 ret 317 318 use_multiboot_map: 319 320 /* Copy address of the memory map to edx */ 321 movl 48(%ebx), %edx 322 movl %edx, %ecx 323 324 addl 44(%ebx), %ecx 325 326 /* Find a free region at least 2M in size */ 327 check_memmap_loop: 328 329 /* Is this a free region? */ 330 cmp $1, 20(%edx) 331 jnz next_region 332 333 /* Check size */ 334 cmp $0, 16(%edx) 335 jnz next_region 336 337 cmpl $(2 * 1024 * 1024 + 4 * 1024), 12(%edx) 338 jbe next_region 339 340 cmp $0, 8(%edx) 341 jz found_region 342 343 next_region: 344 345 cmp %ecx, %edx 346 jbe next_region_do 347 348 ret 349 350 next_region_do: 351 352 addl (%edx), %edx 353 addl $4, %edx 354 jmp check_memmap_loop 355 356 found_region: 357 358 /* Use end of the found region */ 359 mov 4(%edx), %ecx 360 add 12(%edx), %ecx 361 sub $(2 * 1024 * 1024), %ecx 362 mov %ecx, free_area 363 364 ret 179 365 180 366 /** Print string to EGA display (in light red) and halt. … … 521 707 grub_eax: 522 708 .long 0 523 524 709 grub_ebx: 525 710 .long 0 526 711 527 err_pse: 528 .asciz "Page Size Extension not supported. System halted." 712 pt_loc: 713 .long 0 714 kernel_end: 715 .long 0 716 free_area: 717 .long 0 529 718 530 719 status_prot: 531 720 .asciz "[prot] " 721 status_pse: 722 .asciz "[pse] " 723 status_non_pse: 724 .asciz "[non_pse] " 532 725 status_vesa_copy: 533 726 .asciz "[vesa_copy] " … … 538 731 status_prot2: 539 732 .asciz "[prot2] " 733 status_prot3: 734 .asciz "[prot3] " 540 735 status_main: 541 736 .asciz "[main] " -
kernel/arch/ia32/src/cpu/cpu.c
r86a34d3e rbd5f3b7 118 118 ); 119 119 } 120 120 121 #ifndef PROCESSOR_i486 121 122 if (CPU->arch.fi.bits.sep) { 122 123 /* Setup fast SYSENTER/SYSEXIT syscalls */ 123 124 syscall_setup_cpu(); 124 125 } 126 #endif 125 127 } 126 128 -
kernel/arch/ia32/src/drivers/vesa.c
r86a34d3e rbd5f3b7 38 38 39 39 #include <genarch/fb/fb.h> 40 #include <genarch/fb/visuals.h>41 40 #include <arch/drivers/vesa.h> 42 41 #include <console/chardev.h> -
kernel/arch/ia32/src/proc/scheduler.c
r86a34d3e rbd5f3b7 60 60 uintptr_t kstk = (uintptr_t) &THREAD->kstack[STACK_SIZE]; 61 61 62 #ifndef PROCESSOR_i486 62 63 if (CPU->arch.fi.bits.sep) { 63 64 /* Set kernel stack for CP3 -> CPL0 switch via SYSENTER */ 64 65 write_msr(IA32_MSR_SYSENTER_ESP, kstk - sizeof(istate_t)); 65 66 } 67 #endif 66 68 67 69 /* Set kernel stack for CPL3 -> CPL0 switch via interrupt */ -
kernel/arch/ia32/src/smp/smp.c
r86a34d3e rbd5f3b7 42 42 #include <config.h> 43 43 #include <synch/waitq.h> 44 #include <synch/synch.h>45 44 #include <arch/pm.h> 46 45 #include <func.h> -
kernel/arch/ia32/src/syscall.c
r86a34d3e rbd5f3b7 39 39 #include <arch/pm.h> 40 40 41 #ifndef PROCESSOR_i486 42 41 43 /** Enable & setup support for SYSENTER/SYSEXIT */ 42 44 void syscall_setup_cpu(void) … … 50 52 } 51 53 54 #endif /* PROCESSOR_i486 */ 55 52 56 /** @} 53 57 */ -
kernel/arch/ia32/src/userspace.c
r86a34d3e rbd5f3b7 37 37 #include <typedefs.h> 38 38 #include <arch.h> 39 #include < proc/uarg.h>39 #include <abi/proc/uarg.h> 40 40 #include <mm/as.h> 41 42 41 43 42 /** Enter userspace -
kernel/arch/ia64/include/elf.h
r86a34d3e rbd5f3b7 27 27 */ 28 28 29 /** @addtogroup ia64 29 /** @addtogroup ia64 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ia64_ELF_H_ 37 37 38 #define ELF_MACHINEEM_IA_6439 #define ELF_DATA_ENCODING ELFDATA2LSB40 #define ELF_CLASS ELFCLASS6438 #define ELF_MACHINE EM_IA_64 39 #define ELF_DATA_ENCODING ELFDATA2LSB 40 #define ELF_CLASS ELFCLASS64 41 41 42 42 #endif -
kernel/arch/ia64/include/istate.h
r86a34d3e rbd5f3b7 36 36 #define KERN_ia64_ISTATE_H_ 37 37 38 #include <trace.h> 39 40 #ifdef KERNEL 41 38 42 #include <arch/register.h> 39 43 40 #ifdef KERNEL 41 #include <typedefs.h> 42 #include <trace.h> 43 #else 44 #include <sys/types.h> 45 #define NO_TRACE 46 #endif 44 #else /* KERNEL */ 45 46 #include <libarch/register.h> 47 48 #endif /* KERNEL */ 47 49 48 50 typedef struct istate { -
kernel/arch/ia64/include/mm/frame.h
r86a34d3e rbd5f3b7 39 39 #define FRAME_SIZE (1 << FRAME_WIDTH) 40 40 41 #ifdef KERNEL42 41 #ifndef __ASM__ 43 42 … … 50 49 51 50 #endif /* __ASM__ */ 52 #endif /* KERNEL */53 51 54 52 #endif -
kernel/arch/ia64/include/mm/page.h
r86a34d3e rbd5f3b7 41 41 #define PAGE_SIZE FRAME_SIZE 42 42 #define PAGE_WIDTH FRAME_WIDTH 43 44 #ifdef KERNEL45 43 46 44 /** Bit width of the TLB-locked portion of kernel address space. */ … … 316 314 #endif /* __ASM__ */ 317 315 318 #endif /* KERNEL */319 320 316 #endif 321 317 -
kernel/arch/ia64/include/register.h
r86a34d3e rbd5f3b7 61 61 #define PSR_CPL_MASK_SHIFTED 3 62 62 63 #define PSR_RI_SHIFT 4164 #define PSR_RI_LEN 263 #define PSR_RI_SHIFT 41 64 #define PSR_RI_LEN 2 65 65 66 66 #define PFM_MASK (~0x3fffffffff) … … 145 145 #ifndef __ASM__ 146 146 147 #ifdef KERNEL148 #include <typedefs.h>149 #else150 #include <sys/types.h>151 #endif152 153 147 /** Processor Status Register. */ 154 148 typedef union { -
kernel/arch/ia64/src/ia64.c
r86a34d3e rbd5f3b7 50 50 #include <userspace.h> 51 51 #include <console/console.h> 52 #include < proc/uarg.h>52 #include <abi/proc/uarg.h> 53 53 #include <syscall/syscall.h> 54 54 #include <ddi/irq.h> -
kernel/arch/mips32/include/context_offset.h
r86a34d3e rbd5f3b7 63 63 #ifdef __ASM__ 64 64 65 #ifdef KERNEL 66 65 67 #include <arch/asm/regname.h> 66 68 67 # ctx: address of the structure with saved context 69 #else /* KERNEL */ 70 71 #include <libarch/regname.h> 72 73 #endif /* KERNEL */ 74 75 /* ctx: address of the structure with saved context */ 68 76 .macro CONTEXT_SAVE_ARCH_CORE ctx:req 69 sw $s0, OFFSET_S0(\ctx)70 sw $s1, OFFSET_S1(\ctx)71 sw $s2, OFFSET_S2(\ctx)72 sw $s3, OFFSET_S3(\ctx)73 sw $s4, OFFSET_S4(\ctx)74 sw $s5, OFFSET_S5(\ctx)75 sw $s6, OFFSET_S6(\ctx)76 sw $s7, OFFSET_S7(\ctx)77 sw $s8, OFFSET_S8(\ctx)78 sw $gp, OFFSET_GP(\ctx)79 77 sw $s0, OFFSET_S0(\ctx) 78 sw $s1, OFFSET_S1(\ctx) 79 sw $s2, OFFSET_S2(\ctx) 80 sw $s3, OFFSET_S3(\ctx) 81 sw $s4, OFFSET_S4(\ctx) 82 sw $s5, OFFSET_S5(\ctx) 83 sw $s6, OFFSET_S6(\ctx) 84 sw $s7, OFFSET_S7(\ctx) 85 sw $s8, OFFSET_S8(\ctx) 86 sw $gp, OFFSET_GP(\ctx) 87 80 88 #ifndef KERNEL 81 sw $k1, OFFSET_TLS(\ctx)82 89 sw $k1, OFFSET_TLS(\ctx) 90 83 91 #ifdef CONFIG_FPU 84 mfc1 $t0, $2092 mfc1 $t0, $20 85 93 sw $t0, OFFSET_F20(\ctx) 86 87 mfc1 $t0, $2194 95 mfc1 $t0, $21 88 96 sw $t0, OFFSET_F21(\ctx) 89 90 mfc1 $t0, $2297 98 mfc1 $t0, $22 91 99 sw $t0, OFFSET_F22(\ctx) 92 93 mfc1 $t0, $23100 101 mfc1 $t0, $23 94 102 sw $t0, OFFSET_F23(\ctx) 95 96 mfc1 $t0, $24103 104 mfc1 $t0, $24 97 105 sw $t0, OFFSET_F24(\ctx) 98 99 mfc1 $t0, $25106 107 mfc1 $t0, $25 100 108 sw $t0, OFFSET_F25(\ctx) 101 102 mfc1 $t0, $26109 110 mfc1 $t0, $26 103 111 sw $t0, OFFSET_F26(\ctx) 104 105 mfc1 $t0, $27112 113 mfc1 $t0, $27 106 114 sw $t0, OFFSET_F27(\ctx) 107 108 mfc1 $t0, $28115 116 mfc1 $t0, $28 109 117 sw $t0, OFFSET_F28(\ctx) 110 111 mfc1 $t0, $29118 119 mfc1 $t0, $29 112 120 sw $t0, OFFSET_F29(\ctx) 113 121 114 mfc1 $t0, $30122 mfc1 $t0, $30 115 123 sw $t0, OFFSET_F30(\ctx) 116 124 #endif /* CONFIG_FPU */ 117 125 #endif /* KERNEL */ 118 119 sw $ra, OFFSET_PC(\ctx)120 sw $sp, OFFSET_SP(\ctx)126 127 sw $ra, OFFSET_PC(\ctx) 128 sw $sp, OFFSET_SP(\ctx) 121 129 .endm 122 130 123 # ctx: address of the structure with saved context 131 /* ctx: address of the structure with saved context */ 124 132 .macro CONTEXT_RESTORE_ARCH_CORE ctx:req 125 lw $s0, OFFSET_S0(\ctx)126 lw $s1, OFFSET_S1(\ctx)127 lw $s2, OFFSET_S2(\ctx)128 lw $s3, OFFSET_S3(\ctx)129 lw $s4, OFFSET_S4(\ctx)130 lw $s5, OFFSET_S5(\ctx)131 lw $s6, OFFSET_S6(\ctx)132 lw $s7, OFFSET_S7(\ctx)133 lw $s8, OFFSET_S8(\ctx)134 lw $gp, OFFSET_GP(\ctx)133 lw $s0, OFFSET_S0(\ctx) 134 lw $s1, OFFSET_S1(\ctx) 135 lw $s2, OFFSET_S2(\ctx) 136 lw $s3, OFFSET_S3(\ctx) 137 lw $s4, OFFSET_S4(\ctx) 138 lw $s5, OFFSET_S5(\ctx) 139 lw $s6, OFFSET_S6(\ctx) 140 lw $s7, OFFSET_S7(\ctx) 141 lw $s8, OFFSET_S8(\ctx) 142 lw $gp, OFFSET_GP(\ctx) 135 143 #ifndef KERNEL 136 lw $k1, OFFSET_TLS(\ctx)137 144 lw $k1, OFFSET_TLS(\ctx) 145 138 146 #ifdef CONFIG_FPU 139 147 lw $t0, OFFSET_F20(\ctx) 140 mtc1 $t0, $20141 148 mtc1 $t0, $20 149 142 150 lw $t0, OFFSET_F21(\ctx) 143 mtc1 $t0, $21144 151 mtc1 $t0, $21 152 145 153 lw $t0, OFFSET_F22(\ctx) 146 mtc1 $t0, $22147 154 mtc1 $t0, $22 155 148 156 lw $t0, OFFSET_F23(\ctx) 149 mtc1 $t0, $23150 157 mtc1 $t0, $23 158 151 159 lw $t0, OFFSET_F24(\ctx) 152 mtc1 $t0, $24153 160 mtc1 $t0, $24 161 154 162 lw $t0, OFFSET_F25(\ctx) 155 mtc1 $t0, $25156 163 mtc1 $t0, $25 164 157 165 lw $t0, OFFSET_F26(\ctx) 158 mtc1 $t0, $26159 166 mtc1 $t0, $26 167 160 168 lw $t0, OFFSET_F27(\ctx) 161 mtc1 $t0, $27162 169 mtc1 $t0, $27 170 163 171 lw $t0, OFFSET_F28(\ctx) 164 mtc1 $t0, $28165 172 mtc1 $t0, $28 173 166 174 lw $t0, OFFSET_F29(\ctx) 167 mtc1 $t0, $29168 175 mtc1 $t0, $29 176 169 177 lw $t0, OFFSET_F30(\ctx) 170 mtc1 $t0, $30178 mtc1 $t0, $30 171 179 #endif /* CONFIG_FPU */ 172 180 #endif /* KERNEL */ 173 174 lw $ra, OFFSET_PC(\ctx)175 lw $sp, OFFSET_SP(\ctx)181 182 lw $ra, OFFSET_PC(\ctx) 183 lw $sp, OFFSET_SP(\ctx) 176 184 .endm 177 185 178 #endif 179 186 #endif /* __ASM__ */ 180 187 181 188 #endif -
kernel/arch/mips32/include/cp0.h
r86a34d3e rbd5f3b7 36 36 #define KERN_mips32_CP0_H_ 37 37 38 #ifdef KERNEL39 #include <typedefs.h>40 #else41 #include <sys/types.h>42 #endif43 44 38 #define cp0_status_ie_enabled_bit (1 << 0) 45 39 #define cp0_status_exl_exception_bit (1 << 1) … … 49 43 #define cp0_status_fpu_bit (1 << 29) 50 44 51 #define cp0_status_im_shift 852 #define cp0_status_im_mask 0xff0045 #define cp0_status_im_shift 8 46 #define cp0_status_im_mask 0xff00 53 47 54 #define cp0_cause_excno(cause) ((cause >> 2) & 0x1f)55 #define cp0_cause_coperr(cause) ((cause >> 28) & 0x3)48 #define cp0_cause_excno(cause) ((cause >> 2) & 0x1f) 49 #define cp0_cause_coperr(cause) ((cause >> 28) & 0x3) 56 50 57 #define fpu_cop_id 151 #define fpu_cop_id 1 58 52 59 53 /* 60 54 * Magic value for use in msim. 61 55 */ 62 #define cp0_compare_value 10000056 #define cp0_compare_value 100000 63 57 64 #define cp0_mask_all_int() cp0_status_write(cp0_status_read() & ~(cp0_status_im_mask)) 65 #define cp0_unmask_all_int() cp0_status_write(cp0_status_read() | cp0_status_im_mask) 66 #define cp0_mask_int(it) cp0_status_write(cp0_status_read() & ~(1 << (cp0_status_im_shift + (it)))) 67 #define cp0_unmask_int(it) cp0_status_write(cp0_status_read() | (1 << (cp0_status_im_shift + (it)))) 58 #define cp0_mask_all_int() \ 59 cp0_status_write(cp0_status_read() & ~(cp0_status_im_mask)) 68 60 69 #define GEN_READ_CP0(nm,reg) static inline uint32_t cp0_ ##nm##_read(void) \ 70 { \ 71 uint32_t retval; \ 72 asm volatile ("mfc0 %0, $" #reg : "=r"(retval)); \ 73 return retval; \ 74 } 61 #define cp0_unmask_all_int() \ 62 cp0_status_write(cp0_status_read() | cp0_status_im_mask) 75 63 76 #define GEN_WRITE_CP0(nm,reg) static inline void cp0_ ##nm##_write(uint32_t val) \ 77 { \ 78 asm volatile ("mtc0 %0, $" #reg : : "r"(val) ); \ 79 } 64 #define cp0_mask_int(it) \ 65 cp0_status_write(cp0_status_read() & ~(1 << (cp0_status_im_shift + (it)))) 66 67 #define cp0_unmask_int(it) \ 68 cp0_status_write(cp0_status_read() | (1 << (cp0_status_im_shift + (it)))) 69 70 #define GEN_READ_CP0(nm, reg) \ 71 static inline uint32_t cp0_ ##nm##_read(void) \ 72 { \ 73 uint32_t retval; \ 74 \ 75 asm volatile ( \ 76 "mfc0 %0, $" #reg \ 77 : "=r"(retval) \ 78 ); \ 79 \ 80 return retval; \ 81 } 82 83 #define GEN_WRITE_CP0(nm, reg) \ 84 static inline void cp0_ ##nm##_write(uint32_t val) \ 85 { \ 86 asm volatile ( \ 87 "mtc0 %0, $" #reg \ 88 :: "r"(val) \ 89 ); \ 90 } 80 91 81 92 GEN_READ_CP0(index, 0); -
kernel/arch/mips32/include/istate.h
r86a34d3e rbd5f3b7 36 36 #define KERN_mips32_ISTATE_H_ 37 37 38 #include <trace.h> 39 40 #ifdef KERNEL 41 38 42 #include <arch/cp0.h> 39 43 40 #ifdef KERNEL 41 #include <typedefs.h> 42 #include <trace.h> 43 #else 44 #include <sys/types.h> 45 #define NO_TRACE 46 #endif 44 #else /* KERNEL */ 45 46 #include <libarch/cp0.h> 47 48 #endif /* KERNEL */ 47 49 48 50 typedef struct istate { -
kernel/arch/mips32/include/mm/frame.h
r86a34d3e rbd5f3b7 39 39 #define FRAME_SIZE (1 << FRAME_WIDTH) 40 40 41 #ifdef KERNEL42 41 #ifndef __ASM__ 43 42 … … 46 45 47 46 #endif /* __ASM__ */ 48 #endif /* KERNEL */49 47 50 48 #endif -
kernel/arch/mips32/include/mm/page.h
r86a34d3e rbd5f3b7 49 49 # define PA2KA(x) ((x) + 0x80000000) 50 50 #endif 51 52 #ifdef KERNEL53 51 54 52 /* … … 188 186 #endif /* __ASM__ */ 189 187 190 #endif /* KERNEL */191 192 188 #endif 193 189 -
kernel/arch/mips32/src/mips32.c
r86a34d3e rbd5f3b7 41 41 #include <memstr.h> 42 42 #include <proc/thread.h> 43 #include < proc/uarg.h>43 #include <abi/proc/uarg.h> 44 44 #include <print.h> 45 45 #include <console/console.h> … … 52 52 #include <arch/debugger.h> 53 53 #include <genarch/fb/fb.h> 54 #include < genarch/fb/visuals.h>54 #include <abi/fb/visuals.h> 55 55 #include <genarch/drivers/dsrln/dsrlnin.h> 56 56 #include <genarch/drivers/dsrln/dsrlnout.h> -
kernel/arch/mips64/include/context_offset.h
r86a34d3e rbd5f3b7 63 63 #ifdef __ASM__ 64 64 65 #ifdef KERNEL 66 65 67 #include <arch/asm/regname.h> 66 68 67 # ctx: address of the structure with saved context 69 #else /* KERNEL */ 70 71 #include <libarch/regname.h> 72 73 #endif /* KERNEL */ 74 75 /* ctx: address of the structure with saved context */ 68 76 .macro CONTEXT_SAVE_ARCH_CORE ctx:req 69 77 sd $s0, OFFSET_S0(\ctx) … … 121 129 .endm 122 130 123 # ctx: address of the structure with saved context 131 /* ctx: address of the structure with saved context */ 124 132 .macro CONTEXT_RESTORE_ARCH_CORE ctx:req 125 133 ld $s0, OFFSET_S0(\ctx) -
kernel/arch/mips64/include/cp0.h
r86a34d3e rbd5f3b7 35 35 #ifndef KERN_mips64_CP0_H_ 36 36 #define KERN_mips64_CP0_H_ 37 38 #ifdef KERNEL39 40 #include <typedefs.h>41 42 #else43 44 #include <sys/types.h>45 46 #endif47 37 48 38 #define cp0_status_ie_enabled_bit (1 << 0) -
kernel/arch/mips64/include/istate.h
r86a34d3e rbd5f3b7 36 36 #define KERN_mips64_ISTATE_H_ 37 37 38 #include < arch/cp0.h>38 #include <trace.h> 39 39 40 40 #ifdef KERNEL 41 41 42 #include <typedefs.h> 43 #include <trace.h> 42 #include <arch/cp0.h> 44 43 45 #else 44 #else /* KERNEL */ 46 45 47 #include <sys/types.h> 48 #define NO_TRACE 46 #include <libarch/cp0.h> 49 47 50 #endif 48 #endif /* KERNEL */ 51 49 52 50 typedef struct istate { -
kernel/arch/mips64/include/mm/frame.h
r86a34d3e rbd5f3b7 39 39 #define FRAME_SIZE (1 << FRAME_WIDTH) 40 40 41 #ifdef KERNEL42 41 #ifndef __ASM__ 43 42 … … 46 45 47 46 #endif /* __ASM__ */ 48 #endif /* KERNEL */49 47 50 48 #endif -
kernel/arch/mips64/include/mm/page.h
r86a34d3e rbd5f3b7 50 50 #endif 51 51 52 #ifdef KERNEL53 52 #ifndef __ASM__ 54 53 … … 56 55 57 56 #endif /* __ASM__ */ 58 #endif /* KERNEL */59 57 60 58 #endif -
kernel/arch/mips64/src/mips64.c
r86a34d3e rbd5f3b7 41 41 #include <memstr.h> 42 42 #include <proc/thread.h> 43 #include < proc/uarg.h>43 #include <abi/proc/uarg.h> 44 44 #include <print.h> 45 45 #include <console/console.h> … … 52 52 #include <arch/debugger.h> 53 53 #include <genarch/fb/fb.h> 54 #include < genarch/fb/visuals.h>54 #include <abi/fb/visuals.h> 55 55 #include <genarch/drivers/dsrln/dsrlnin.h> 56 56 #include <genarch/drivers/dsrln/dsrlnout.h> -
kernel/arch/ppc32/include/asm.h
r86a34d3e rbd5f3b7 38 38 #include <typedefs.h> 39 39 #include <config.h> 40 #include <arch/ cpu.h>40 #include <arch/msr.h> 41 41 #include <arch/mm/asid.h> 42 42 #include <trace.h> -
kernel/arch/ppc32/include/context_offset.h
r86a34d3e rbd5f3b7 75 75 76 76 #ifdef __ASM__ 77 # include <arch/asm/regname.h>78 77 79 # ctx: address of the structure with saved context 78 #ifdef KERNEL 79 80 #include <arch/asm/regname.h> 81 82 #else /* KERNEL */ 83 84 #include <libarch/regname.h> 85 86 #endif /* KERNEL */ 87 88 /* ctx: address of the structure with saved context */ 80 89 .macro CONTEXT_SAVE_ARCH_CORE ctx:req 81 90 stw sp, OFFSET_SP(\ctx) … … 102 111 .endm 103 112 104 # ctx: address of the structure with saved context 113 /* ctx: address of the structure with saved context */ 105 114 .macro CONTEXT_RESTORE_ARCH_CORE ctx:req 106 115 lwz sp, OFFSET_SP(\ctx) -
kernel/arch/ppc32/include/cpu.h
r86a34d3e rbd5f3b7 36 36 #define KERN_ppc32_CPU_H_ 37 37 38 /* MSR bits */39 #define MSR_DR (1 << 4)40 #define MSR_IR (1 << 5)41 #define MSR_PR (1 << 14)42 #define MSR_EE (1 << 15)43 44 /* HID0 bits */45 #define HID0_STEN (1 << 24)46 #define HID0_ICE (1 << 15)47 #define HID0_DCE (1 << 14)48 #define HID0_ICFI (1 << 11)49 #define HID0_DCI (1 << 10)50 51 #ifndef __ASM__52 53 38 #include <typedefs.h> 54 39 #include <trace.h> … … 67 52 } 68 53 69 #endif /* __ASM__ */70 71 54 #endif 72 55 -
kernel/arch/ppc32/include/exception.h
r86a34d3e rbd5f3b7 37 37 38 38 #include <typedefs.h> 39 #include <arch/ cpu.h>39 #include <arch/msr.h> 40 40 #include <trace.h> 41 41 -
kernel/arch/ppc32/include/istate.h
r86a34d3e rbd5f3b7 36 36 #define KERN_ppc32_EXCEPTION_H_ 37 37 38 #include <typedefs.h>39 #include <arch/cpu.h>40 38 #include <trace.h> 39 40 #ifdef KERNEL 41 42 #include <arch/msr.h> 43 44 #else /* KERNEL */ 45 46 #include <libarch/msr.h> 47 48 #endif /* KERNEL */ 41 49 42 50 typedef struct istate { -
kernel/arch/ppc32/include/mm/frame.h
r86a34d3e rbd5f3b7 39 39 #define FRAME_SIZE (1 << FRAME_WIDTH) 40 40 41 #ifdef KERNEL42 41 #ifndef __ASM__ 43 42 … … 63 62 64 63 #endif /* __ASM__ */ 65 #endif /* KERNEL */66 64 67 65 #endif -
kernel/arch/ppc32/include/mm/page.h
r86a34d3e rbd5f3b7 41 41 #define PAGE_WIDTH FRAME_WIDTH 42 42 #define PAGE_SIZE FRAME_SIZE 43 44 #ifdef KERNEL45 43 46 44 #ifndef __ASM__ … … 181 179 #endif /* __ASM__ */ 182 180 183 #endif /* KERNEL */184 185 181 #endif 186 182 -
kernel/arch/ppc32/src/asm.S
r86a34d3e rbd5f3b7 28 28 29 29 #include <arch/asm/regname.h> 30 #include <arch/ cpu.h>30 #include <arch/msr.h> 31 31 32 32 .text -
kernel/arch/ppc32/src/exception.S
r86a34d3e rbd5f3b7 28 28 29 29 #include <arch/asm/regname.h> 30 #include <arch/ cpu.h>30 #include <arch/msr.h> 31 31 #include <arch/mm/page.h> 32 32 -
kernel/arch/ppc32/src/ppc32.c
r86a34d3e rbd5f3b7 41 41 #include <interrupt.h> 42 42 #include <genarch/fb/fb.h> 43 #include < genarch/fb/visuals.h>43 #include <abi/fb/visuals.h> 44 44 #include <genarch/ofw/ofw_tree.h> 45 45 #include <genarch/ofw/pci.h> 46 46 #include <userspace.h> 47 47 #include <mm/page.h> 48 #include < proc/uarg.h>48 #include <abi/proc/uarg.h> 49 49 #include <console/console.h> 50 50 #include <sysinfo/sysinfo.h> -
kernel/arch/sparc64/include/barrier.h
r86a34d3e rbd5f3b7 37 37 38 38 #include <trace.h> 39 40 #ifdef KERNEL41 42 #include <typedefs.h>43 44 #else45 46 #include <stdint.h>47 48 #endif49 39 50 40 /* -
kernel/arch/sparc64/include/elf.h
r86a34d3e rbd5f3b7 27 27 */ 28 28 29 /** @addtogroup sparc64 29 /** @addtogroup sparc64 30 30 * @{ 31 31 */ … … 36 36 #define KERN_sparc64_ELF_H_ 37 37 38 #define ELF_MACHINEEM_SPARCV939 #define ELF_DATA_ENCODING ELFDATA2MSB40 #define ELF_CLASS ELFCLASS6438 #define ELF_MACHINE EM_SPARCV9 39 #define ELF_DATA_ENCODING ELFDATA2MSB 40 #define ELF_CLASS ELFCLASS64 41 41 42 42 #endif -
kernel/arch/sparc64/include/istate.h
r86a34d3e rbd5f3b7 37 37 #define KERN_sparc64_ISTATE_H_ 38 38 39 #include <trace.h> 40 41 #ifdef KERNEL 42 39 43 #include <arch/regdef.h> 40 44 41 #ifdef KERNEL 42 #include <typedefs.h> 43 #include <trace.h> 44 #else 45 #include <sys/types.h> 46 #define NO_TRACE 47 #endif 45 #else /* KERNEL */ 46 47 #include <libarch/regdef.h> 48 49 #endif /* KERNEL */ 48 50 49 51 typedef struct istate { -
kernel/arch/sparc64/include/mm/page.h
r86a34d3e rbd5f3b7 54 54 #define MMU_PAGES_PER_PAGE (1 << (PAGE_WIDTH - MMU_PAGE_WIDTH)) 55 55 56 #ifdef KERNEL57 58 56 #ifndef __ASM__ 59 57 … … 77 75 #endif /* !def __ASM__ */ 78 76 79 #endif /* KERNEL */80 81 77 #endif 82 78 -
kernel/arch/sparc64/include/mm/sun4u/frame.h
r86a34d3e rbd5f3b7 52 52 #define FRAME_SIZE (1 << FRAME_WIDTH) 53 53 54 #ifdef KERNEL55 54 #ifndef __ASM__ 56 55 … … 80 79 81 80 #endif 82 #endif83 81 84 82 #endif -
kernel/arch/sparc64/include/mm/sun4v/frame.h
r86a34d3e rbd5f3b7 42 42 #define FRAME_SIZE (1 << FRAME_WIDTH) 43 43 44 #ifdef KERNEL45 44 #ifndef __ASM__ 46 45 … … 52 51 53 52 #endif 54 #endif55 53 56 54 #endif -
kernel/arch/sparc64/include/mm/sun4v/page.h
r86a34d3e rbd5f3b7 46 46 #define MMU_PAGES_PER_PAGE (1 << (PAGE_WIDTH - MMU_PAGE_WIDTH)) 47 47 48 #ifdef KERNEL49 50 48 #ifndef __ASM__ 51 49 … … 69 67 #endif /* !def __ASM__ */ 70 68 71 #endif /* KERNEL */72 73 69 #endif 74 70 -
kernel/arch/sparc64/include/sun4v/regdef.h
r86a34d3e rbd5f3b7 28 28 */ 29 29 30 /** @addtogroup sparc64 30 /** @addtogroup sparc64 31 31 * @{ 32 32 */ … … 37 37 #define KERN_sparc64_sun4v_REGDEF_H_ 38 38 39 #define PSTATE_IE_BIT (1 << 1) 40 #define PSTATE_PRIV_BIT (1 << 2) 41 #define PSTATE_PEF_BIT (1 << 4) 39 #define TSTATE_CWP_MASK 0x1f 42 40 43 #define TSTATE_PSTATE_SHIFT 8 44 #define TSTATE_PRIV_BIT (PSTATE_PRIV_BIT << TSTATE_PSTATE_SHIFT) 45 #define TSTATE_CWP_MASK 0x1f 46 #define TSTATE_IE_BIT (PSTATE_IE_BIT << TSTATE_PSTATE_SHIFT) 47 48 #define WSTATE_NORMAL(n) (n) 49 #define WSTATE_OTHER(n) ((n) << 3) 50 51 #define TSTATE_PEF_BIT (PSTATE_PEF_BIT << TSTATE_PSTATE_SHIFT) 41 #define WSTATE_NORMAL(n) (n) 42 #define WSTATE_OTHER(n) ((n) << 3) 52 43 53 44 #endif -
kernel/arch/sparc64/src/drivers/scr.c
r86a34d3e rbd5f3b7 39 39 #include <genarch/ofw/upa.h> 40 40 #include <genarch/fb/fb.h> 41 #include < genarch/fb/visuals.h>41 #include <abi/fb/visuals.h> 42 42 #include <console/chardev.h> 43 43 #include <console/console.h> -
kernel/arch/sparc64/src/smp/sun4u/smp.c
r86a34d3e rbd5f3b7 42 42 #include <macros.h> 43 43 #include <typedefs.h> 44 #include <synch/synch.h>45 44 #include <synch/waitq.h> 46 45 #include <print.h> -
kernel/arch/sparc64/src/smp/sun4v/smp.c
r86a34d3e rbd5f3b7 45 45 #include <func.h> 46 46 #include <typedefs.h> 47 #include <synch/synch.h>48 47 #include <synch/waitq.h> 49 48 #include <print.h> -
kernel/arch/sparc64/src/sun4v/start.S
r86a34d3e rbd5f3b7 30 30 #include <arch/arch.h> 31 31 #include <arch/stack.h> 32 #include <arch/regdef.h> 32 33 #include <arch/context_offset.h> 33 34 #include <arch/sun4v/regdef.h>
Note:
See TracChangeset
for help on using the changeset viewer.
