Add function to walk through children.

Without losing my sanity that is.
ACPI API refactoring will happen some day.
Codestyle.
Release HaikuWebKit 1.4.4.
boot/x86_64: call debug_cleanup() before preparing mmu data

long_mmu_init() prepares initial paging structures for 64 bit kernel.
Once that function completes bootloader cannot allocate any memory
that needs to be passed to the kernel.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
boot/x86_64: convert address of previous_debug_output

Together with the previous commit should fix #10535.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
Fix #6865: [Tracker] Use default checkboxes for permissions
BPartition: Move dev_t return value to an optional parameter

Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
HaikuDepot: Improve filter UI, fix pkg translations

 * The categories and other filter options are orthogonal. Don't
   force the user to choose between real categories and for example
   "installed" or "available" in the same drop-down. I've removed
   (for now) the Options main menu. There are now four small check-marks
   below the filtering drop-downs: Available, Installed, Development and
   Source Code. These enable showing the respective packages in the list
   view. Only "Available" is checked by default. This changes the default
   behavior to show only not-yet-installed packages. This change puts
   the filtering options in one place, the showing of development or
   source code packages is not "hidden somewhere else" anymore. I am not
   so happy with the additional row, however, I am also thinking about
   using icons instead of the checkmarks.
 * Fixed finding the suitable package translation for summary and
   description. For example, WonderBrush now has a German translation.
HaikuDepot: Fixed reading bigger screenshots

 * Increase the RAM limit to 128K per screenshot
 * Reduce retrieved size to 320 pixel wide
 * Don't expect to be able to read the stream in one call,
   read it in 4K chunks.
 * Print some errors in this code-path to stderr.
Add get_name and fix get_next_object.

TODO: Need to add defines or enum for nameType.
HaikuDepot: Fix x86_64 build failure

Fix the following errors:

  PackageInfo.cpp:85:23: error: comparison between signed and unsigned integer expressions
  PackageInfo.cpp:93:21: error: comparison between signed and unsigned integer expressions

Signed-off-by: Alex Smith <alex@alex-smith.me.uk>
libroot: sethostname() now uses ftruncate().

* Before, it would just overwrite the previous name, leaving extra
  bytes from the previous name (they wouldn't become part of the
  host name, but it just didn't look that nice).
Installer: don't replace system/settings.

* Instead of removing "system" in the target completely, only
  replace all of its subfolders.
* The downside of the current solution is that extra files, and
  directories in "system" will not be removed. Improvements
  welcome.
Fix (hopefully) bootstrap build with HAIKU_NO_DOWNLOADS=1

* With HAIKU_NO_DOWNLOADS=1, the check against existing package files
  in the download folder should only be done in the phase that is
  adding packages to be put onto the resulting target image, not in the 
  phase that is adding the bootstrap packages (as here those packages 
  will be *built*, not downloaded).
kernel/x86[_64]: remove get_optimized_functions from cpu modules

The possibility to specify custom memcpy and memset implementations
in cpu modules is currently unused and there is generally no point
in such feature.

There are only 2 x86 vendors that really matter and there isn't
very big difference in performance of the generic optmized versions
of these funcions across different models. Even if we wanted different
versions of memset and memcpy depending on the processor model or
features much better solution would be to use STT_GNU_IFUNC and save
one indirect call.

Long story short, we don't really benefit in any way from
get_optimized_functions and the feature it implements and it only adds
unnecessary complexity to the code.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
kernel/x86_64: remove memset and memcpy from commpage

There is absolutely no reason for these functions to be in commpage,
they don't do anything that involves the kernel in any way.

Additionaly, this patch rewrites memset and memcpy to C++, current
implementation is quite simple (though it may perform surprisingly
well when dealing with large buffers on cpus with ermsb). Better
versions are coming soon.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
kernel/x86_64: make sure stack is properly aligned in syscalls

Just following the path of least resistance and adding andq $~15, %rsp
where appropriate. That should also make things harder to break
when changing the amount of stuff placed on stack before calling the
actual syscall routine.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
boot/x86_64: enable sse early

Enable SSE as a part of the "preparation of the environment to run any
C or C++ code" in the entry points of stage2 bootloader.

SSE2 is going to be used by memset() and memcpy().

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
kernel/x86_64: save fpu state at interrupts

The kernel is allowed to use fpu anywhere so we must make sure that
user state is not clobbered by saving fpu state at interrupt entry.
There is no need to do that in case of system calls since all fpu
data registers are caller saved.

We do not need, though, to save the whole fpu state at task swich
(again, thanks to calling convention). Only status and control
registers are preserved. This patch actually adds xmm0-15 register
to clobber list of task swich code, but the only reason of that is
to make sure that nothing bad happens inside the function that
executes that task swich. Inspection of the generated code shows
that no xmm registers are actually saved.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
kernel/x86_64: clear xmm0-15 registers on syscall exit

As Alex pointed out we can leak possibly sensitive data in xmm registers
when returning from the kernel. To prevent that xmm0-15 are zeroed
before sysret or iret. The cost is negligible.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>