42711 Commits

Author SHA1 Message Date
Alex Smith
1671cfdf2c Improved stack tracer, traces over iframes. 2012-07-05 16:11:11 +01:00
Alex Smith
898b29e362 Added temporary stack trace function to x86_64.
Will be merged with the x86 one later on. Requires -fno-omit-frame-pointer on
the kernel build flags, GCC defaults to not generating stack frames on x86_64.
2012-07-05 15:35:43 +01:00
Alex Smith
0da10c8b51 Some fixes to the long mode switch code.
* Wasn't storing the fixed virtual address of the PML4 in kernel_args.
* After switching to long mode, reload GDTR with the virtual address of
  the GDT. This was working fine until now because the physical address
  was identity mapped, but broke as soon as I removed the identity
  mapping.
2012-07-05 13:55:59 +01:00
Alex Smith
2f36ef5afe Fixed the x86_64 setjmp implementation.
* typedef for jmp_buf was using int where it should be long.
* setjmp was clearing the buffer pointer rather than the signal mask before
  calling sigsetjmp.
* KDL now works without crashing on x86_64.
2012-07-05 13:52:36 +01:00
Alex Smith
78d482e3b8 Style fixes. 2012-07-05 09:10:50 +01:00
Alex Smith
d687d8ac70 Implementation of VMPhysicalPageMapper for x86_64 using the permanent physical memory mapping. 2012-07-04 19:57:48 +01:00
Alex Smith
40aeaeb907 Should enable CR4.PGE while switching to the kernel. 2012-07-04 18:39:23 +01:00
Alex Smith
a8f85e6e48 Removed accidently left in debug message. 2012-07-04 18:33:21 +01:00
Alex Smith
e70dd7e0af Map all physical memory in the long mode paging setup.
Since x86_64 has such a large virtual address space all available physical
memory can be mapped in to it. The physical page mapper implementation for
x86_64 will use this mapping. Also changed the mapping code to map kernel
pages with the global flag.
2012-07-04 18:28:50 +01:00
Alex Smith
950b24e32d Begun work on VMTranslationMap implementation for x86_64.
* Added empty source files for all the 64-bit paging method code, and a
  stub implementation of X86PagingMethod64Bit.
* arch_vm_translation_map.cpp has been modified to use X86PagingMethod64Bit
  on x86_64.
2012-07-04 17:08:44 +01:00
Alex Smith
4988ca58a0 Build arch_vm.cpp for x86_64. No changes required except for temporarily disabling bios_init call. 2012-07-04 14:55:11 +01:00
Alex Smith
428b9e758c Check whether gX86PagingMethod is NULL in arch_vm_translation_map_is_kernel_page_accessible.
This means that the kernel debugger won't cause a recursive panic if a
panic occurs before vm_init().
2012-07-04 14:23:35 +01:00
Alex Smith
4304bb9894 Added arch_cpu.cpp to the x86_64 build.
* Some things are currently ifndef'd out completely for x86_64 because
  they aren't implemented, there's a few other ifdef's to handle x86_64
  differences but most of the code works unchanged.
* Renamed some i386_* functions to x86_*.
* Added a temporary method for setting the current thread on x86_64
  (a global variable, not SMP safe). This will be changed to be done
  via the GS segment but I've not implemented that yet.
2012-07-04 14:06:46 +01:00
Alex Smith
4e8fbfb2d1 x86_{read,write}_cr{0,4} can just be implemented as macros, put an x86_ prefix on the other read/write macros for consistency. 2012-07-03 20:55:36 +01:00
Alex Smith
cbfe5fcd17 Removed redundant x86 sources/headers. 2012-07-03 17:38:18 +01:00
Alex Smith
c005e747ef Removed the x86_64 headers/source directories, now all merged with x86. 2012-07-03 11:17:56 +01:00
Alex Smith
4f419b518f Merged in the x86_64 exception handling.
I've split the 32-bit dependent IDT setup code and ASM interrupt handlers to
the 32 subdirectory, arch_int.cpp now contains only the generic hardware
interrupt handling code.
2012-07-03 11:13:51 +01:00
Alex Smith
22fe9b20f5 Merge branch 'master' into x86_64 2012-07-03 08:46:52 +01:00
Alex Smith
90907c35ac Moved ELF64 relocation functions to x86 arch_elf.cpp. 2012-07-03 08:45:35 +01:00
Rene Gollent
7f7b659ec5 Use safer but slower approach to copying the string. hrev44285 2012-07-02 20:17:03 -04:00
Rene Gollent
29291c8c92 Cleanups/optimizations. hrev44284 2012-07-02 19:42:20 -04:00
Alex Smith
020a25ce46 Fixed x86_64 kernel compilation.
For now I've just put all the stub functions that are needed to link the
kernel into a file called stubs.cpp. I've not yet moved across the interrupt
handling code or the ELF64 relocation code to the x86 directory. Once those
have been moved I can get rid of the x86_64 headers/source directories.
2012-07-02 20:56:27 +01:00
Rene Gollent
dc5a16bb70 Add TODO note with respect to needed asm implementations. hrev44283 2012-07-02 15:42:38 -04:00
Rene Gollent
8695be5049 Fix regressions in arch_cpu_user_strlcpy().
- repnz movsb turns out to not actually be a legal instruction,
  resulting in various strings being copied incorrectly, leading to
  random crashes in various places. Rework to use loop instead.
  Thanks to Alex Smith for helping review changes and offering
  improvements.
- Minor cleanups.
- Fixes #8650 properly.
hrev44282
2012-07-02 15:07:17 -04:00
Alex Smith
0897e314b7 Merged x86_64 headers into x86 headers.
Not many changes seeing as there's not much x86_64 stuff done yet. Small
differences are handled with ifdefs, large differences (descriptors.h,
struct iframe) have separate headers under arch/x86/32 and arch/x86/64.
2012-07-02 18:47:06 +01:00
Alex Smith
da80a0500c Preparation for merge of x86 and x86_64 kernel sources.
Since x86 and x86_64 share a lot of common code, x86_64 kernel sources/headers
are going to reside under headers/private/kernel/arch/x86 and
src/system/kernel/arch/x86 along with the existing x86 code. This commit
changes the build system to handle this. A new variable, TARGET_KERNEL_ARCH,
has been added. This is the name of the kernel/boot architecture directory
name, set to x86 on both x86 and x86_64. This is now used in all places where
TARGET_ARCH was used to get to kernel arch sources/headers (I've changed
everything necessary as far as I can tell). Kernel won't build for x86_64
at the moment as the sources have not been merged, loader does.
2012-07-02 14:07:49 +01:00
Alex Smith
4f78437c0d Style fix. 2012-07-02 10:13:37 +01:00
Alex Smith
120585d549 Merge branch 'master' into x86_64 2012-07-02 09:39:42 +01:00
Rene Gollent
fb8447d595 Fix ticket #8650.
- Replace arch_cpu_user_strlcpy() and arch_cpu_user_memset() with x86 assembly
  versions. These correctly handle the fault handler, which had broken again
  on gcc4 for the C versions, causing stack corruption in certain error cases.
  The other architectures will still need to have corresponding asm variants
  added in order for them to not run into the same issue though.
hrev44281
2012-07-02 02:06:29 -04:00
Michael Lotz
5dc5dbbbb4 Allow more chars to be sent unencoded and encode space as '+'.
While this produces not strictly valid query strings, it reduces the
encoding overhead significantly.
hrev44280
2012-07-01 20:30:35 +02:00
Michael Lotz
39a26a0aa5 Ensure that the qrencode caches are cleared when aborting.
The caches contain pointers into memory allocated by debug_malloc()
that come from a pool that is destroied once the command returns.
We therefore have to ensure that all such pointers are cleared in all
cases before returning from the command or we will run into errors
when executing the next commands.
2012-07-01 20:27:35 +02:00
Michael Lotz
2a80abaa7a Use a shorter URL and query to maximize payload space. hrev44279 2012-07-01 19:36:41 +02:00
Humdinger
f437c10c48 Small visual changes to left scroll view. Fixes #8659.
Fixed width of left scroll view.
Added padding to list items.
Thanks yourpalal for your hints.
hrev44278
2012-07-01 19:06:16 +02:00
Humdinger
62115b4772 Automatic whitespace cleanup and coding style. 2012-07-01 19:06:14 +02:00
Michael Lotz
e0ef5b2a97 Allow aborting the command while QR codes are generated. hrev44277 2012-07-01 19:01:26 +02:00
Michael Lotz
a86c7d0ab3 Add qrwebpost to generate URLs for easier data collection.
Using the qrwebpost debugger command one can initialize an id for
subsequent QR codes. All QR codes generated following such an
invokation produce URL QR codes that link to an online service that
concatenates all data with the same id and later allows it to be
displayed/downloaded in one piece. This makes collecting larger amounts
of data more convenient. Note though that the URL encoding does waste
space and therefore reduces data density, causing more QR codes to be
generated for the same amount of input data.
2012-07-01 19:01:18 +02:00
Michael Lotz
db744fca35 Add libqrencode credits to AboutSystem. hrev44276 2012-07-01 06:53:59 +02:00
Michael Lotz
c95456a699 Add qrencode kernel debugger add-on to the image. hrev44275 2012-07-01 06:37:28 +02:00
Michael Lotz
ce79b4c428 Add qrencode kernel debugger add-on to the build.
The defines in the Jamfile remap the memory allocation functions to use
debug heap versions of the corresponding functions.
2012-07-01 06:37:28 +02:00
Michael Lotz
0948c0ff50 Add module code that wraps qrencode and does the printing.
* Generates QR codes using the qrencode library functions and prints them
  using terminal escape sequences and the special "block" characters.
* Supplies a static QR buffer that can be used to accumulate output for
  later conversion into QR codes.
* Adds qrencode debugger command that allows to generate QR codes for
  arbitrary strings.
* Adds qrappend, qrflush and qrclear to manipulate the QR buffer.
  qrappend can be the target of a pipe to accumulate output from other
  commands. qrflush causes the QR buffer to be encoded and cleared and
  qrclear only clears the QR buffer.
* Adds qrconfig that allows changing the QR code version, determining
  what size QR codes are to be used.
2012-07-01 06:37:27 +02:00
Michael Lotz
5521e28415 Reuse two unused lower ASCII chars for block drawing.
Characters 17, 18 and 19 (device control 1, 2 and 3) become "full block",
"upper filled block" and "lower filled block". Using back- and foreground
color inversion these could be reduced to a single "half block", but
having them available as idividual chars is more convenient.
2012-07-01 06:37:26 +02:00
Michael Lotz
2d37d290b7 Make sure that the internal strdup is used.
The kernel strdup will still be used, as the local symbol doesn't
override that. Since we must not use strdup from within the kernel
debugger (as it does malloc from the normal heap), force the use of
the internal strdup that gets redirected to debug_malloc.
2012-07-01 06:37:26 +02:00
Michael Lotz
fcc4ecb0c7 Add debug_calloc() to the debug_heap. 2012-07-01 06:37:25 +02:00
Michael Lotz
d58aadcdca Import qrencode-3.3.0 source to be used for QR encoding in KDL. 2012-07-01 06:34:44 +02:00
Matt Madia
191b137a31 Updated VL-Gothic fonts to version 20120629. Fixes #8662. hrev44274 2012-06-30 18:51:26 -04:00
Pawel Dziepak
06e8742063 Fix #8643: AVLTreeMap strategy Auto discards const
Signed-off-by: Ingo Weinhold <ingo_weinhold@gmx.de>
hrev44273
2012-06-29 01:37:33 +02:00
Alex Smith
294711f98c Changed {,u}int64 to be long rather than long long on x86_64. 2012-06-28 12:36:45 +01:00
Alex Smith
0705884ac4 Style fixes. 2012-06-27 15:48:39 +01:00
Alex Smith
c9f6d2271f x86_64: Implemented exception handling. 2012-06-27 15:18:10 +01:00
Alex Smith
014f4403ee Use unsigned long, not uint32, for the 'l' qualifier in printf() - long is 64-bit on x86_64. 2012-06-27 15:11:06 +01:00