Commit Graph

15554 Commits

Author SHA1 Message Date
Ingo Weinhold
7176dd57e5 Reworked the exception handling code. The former one ran into the
void after turning off BAT for the segment containing itself.
The monster macro for the exception vector code was not really
elegant besides being too long for the 32 byte performance
monitor exception slot. Furthermore wasting three of the SPRG*
registers as cheap scratch memory wasn't that nice either.

We now have a three-step approach: The exception vectors
themselves contain only five instructions which branch to common
code at the beginning of the same physical page. That one sets
up BAT for itself, turns address translation back on and jumps
into the kernel. There we turn off BAT again, dump an iframe,
and enter the actual exception handler (/dispatcher). Upon return
the registers are restored from the iframe and we get back to the
place where the exception occurred.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-09 03:30:52 +00:00
Ingo Weinhold
c9eb843c35 Added comment about the use of some special purpose registers.
Haven't found a better place yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15880 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-09 03:11:31 +00:00
Ingo Weinhold
e525ca0a4d Fixed relocation of negative 14, 16, or 24 bit values. In case of 14
and 24 bits the set upper bits were overwriting the upper bits of
the word at the target location (usually something like a branch
instruction).
This is the kind of bug that easily take six hours to find, especially
when working with interrupt code and being convinced that the problem
must be related.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15879 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-09 02:47:18 +00:00
Stephan Aßmus
7afc7c5074 ServerFont:
* fixed weird pointer conversion in SetStyle()
* fixed a potential mix up in operator=() in case the
  other ServerFont has fStyle == NULL

ServerWindow:
* the WindowLayer fTopLayer cannot be deleted by
  client request, just for safety reasons
* the link is flushed if there is no drawing engine,
  but this case is theoretical only
* deleting the ServerWindow object syncs with the
  client, so that when BBitmaps are deleted, they
  can be sure there are no pending messages (which
  would be executed in a nother thread)
* there is no timeout anymore when sending messages
  to the client, which made absolutely no sense

AGGTextRenderer:
* renamed fFontManager to fFontCache, because that's
  what it really is
* fLastFamilyAndStyle defaulted to the system plain
  font and therefor that font was never loaded when
  the font never changed meanwhile

DrawingMode:
* I'm not quite sure but I think there was the
  potential of a division by zero, at least I
  had crashes with "divide error"

HWInterface:
* fix update when the cursor shape changed in
  double buffered mode
 
ViewLayer:
* since the top layer is never really deleted
  before its time has come, it is not necessary
  to set it to NULL in the ViewLayer destructor

ViewLayer/WindowLayer:
* added a function to collect the view tokens
  that are affected by an update session

EventDispatcher:
* use the importance of the message for the timeout
  in _SendMessage()
* drop mouse moved events in the server if we're
  lagging behind more than 5 ms (Axel, maybe review)

View:
* there were some problems with the locking
  of the BWindow looper in RemoveSelf(), since
  this is called from the window destructor,
  also of BWindows from BBitmaps, which have
  never been run (this might need review), at
  least I seem to have solved the crashing
  problems introduced by actually deleting the
  view hirarchy in the BWindow destructor
* fixed _Draw() for being used non-recursively,
  temporarily disabled DrawAfterChildren, which
  didn't work yet anyways (because views cannot
  draw over children in the server yet)

Window:
* small cleanup when deleting shortcuts
* sync with the server when having send
  AS_DELETE_WINDOW (see ServerWindow above)
* fixed locking in Begin/EndViewTransaction()
* removed folding of _UPDATE_ messages, since
  there is only one ever in the queue
* set the fInTransaction flag during an update,
  I plan to use this in BView later to
  flush the link when drawing outside of an
  update
* BView::_Draw() is now called by view token,
  this gives the next leap forward in speed,
  the overhead because of drawing clean views
  was considerable



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 22:04:52 +00:00
Stephan Aßmus
f15ba33751 synced with version 1.59 of the OpenTracker rep
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15877 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 18:00:25 +00:00
Ingo Weinhold
a06cbf3fc2 arch_int.c -> arch_int.cpp.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15876 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 17:14:26 +00:00
Jérôme Duval
5543f13539 our elf resolver has a problem with previous way of linking with FSUtils
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15875 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 16:25:28 +00:00
Jérôme Duval
06ac7d759d added FSUtils.cpp from libtracker, fitted for our use
fixed some visual glitches (and gone around a bug in our menu implementation)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15874 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 16:02:44 +00:00
Jérôme Duval
e2491d6b8a reverted to previous version
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15873 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 16:01:05 +00:00
Axel Dörfler
5cd809aaab _kern_get_next_{sem|port}_info() had a wrong argument type for the
cookie (uint32* instead of int32*).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 15:34:09 +00:00
Axel Dörfler
1397187532 Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 13:59:37 +00:00
Axel Dörfler
5ce1a7a509 Fixed (superfluous) GCC4 warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 13:59:19 +00:00
Axel Dörfler
8a74d5f103 Imported r15693 to the R5 version of BFS: fixed endian issues.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 13:55:56 +00:00
Axel Dörfler
1956c146ea bfs_shell now also builds under Linux/PPC, not tested yet, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 13:19:12 +00:00
Axel Dörfler
f7ba8efac9 Fixed GCC4 warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15867 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 13:09:31 +00:00
Axel Dörfler
ea34f0f03b If there was a BMenuItem view with shortcut, it tried to delete the shortcut twice
(as the shortcut list wasn't emptied), courtesy of Stippi.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15866 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 13:05:33 +00:00
Axel Dörfler
8c7229ddbe Fixed some GCC4 only warnings
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 12:39:06 +00:00
Ingo Weinhold
15af38b288 Removed pointless comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15864 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-08 04:54:47 +00:00
Ingo Weinhold
262e0a636b We use the same strategy for computing the system time as on x86 now.
The time base conversion factor is the 32 bit value
  2^32 * 1000000 / time base frequency,
so the system time can be computed by
  system time = time base * conversion factor / 2^32.
The expression in system_time() looks more complicated now, but is
actually much faster (factor 2.5 on my Mac mini). I'm positively
surprised, how good the assembly looks, that GCC 4 generates. There's
not that much potential for optimization by hand-coding the function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15863 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 23:05:56 +00:00
Ingo Weinhold
8baf8813c0 Added "shutdown" debugger command. Implemented arch_cpu_shutdown() for
PPC.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15862 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 22:49:43 +00:00
Ingo Weinhold
85af525e59 * Added missing call to __ppc_setup_system_time(). system_time()
and real_time_clock[_usecs]() finally seem to work (at least in
  the kernel).
* Removed accidentially committed debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15861 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 20:35:13 +00:00
Ingo Weinhold
67ea83c566 We use the generic physical page mapper for PPC now. I realized that it
is actually not that nice for PPC since we don't have large pages.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15860 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 20:32:32 +00:00
Ingo Weinhold
250995598d Tagged things that don't build for PPC, so that they are added
to the x86 image only.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15859 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 20:29:50 +00:00
Ingo Weinhold
b264ddab5d Corrected copyright. :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15858 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 20:27:13 +00:00
Ingo Weinhold
1005ea4b5d Fixed PPC build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15857 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 19:35:18 +00:00
Ingo Weinhold
9e483db6ef Missing include.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15856 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 19:30:34 +00:00
Ingo Weinhold
3b36b30fef * Made vm_alloc_virtual_from_kernel_args() available to other kernel
parts, too. Fixed a potential overflow.
* The generic physical page mapper reserves the virtual address range
  for the IO space now, so that noone can interfere until an area has
  been created. The location of the IO space is no longer fixed; it
  didn't look to me like it was necessary for x86, and we definitely
  need to be flexible for PPC.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15855 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 17:37:21 +00:00
Ingo Weinhold
4f7d12cf6a Made C++ save.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15854 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 03:14:02 +00:00
Ingo Weinhold
a71974c1f8 Pulled the algorithm for dynamically mapping physical pages into an
"IO space" out of the x86 specific source into arch/generic. We'll use
it for PPC as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15853 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-07 03:13:42 +00:00
Stephan Aßmus
1e1b86ef54 * make sure that fTopLayer is NULL when the top layer is deleted
* make sure layers are removed from the token space when the
  WindowLayer is deleted


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-06 17:17:54 +00:00
Stephan Aßmus
fb82d189d0 * BWindow deletes its view hirachry
* BViews set fOwner to NULL recursively when detached
* updated a comment


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-06 17:14:58 +00:00
Axel Dörfler
23ae1e249f Added drag&drop support, some cleanup - courtesy of stippi.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-06 11:49:06 +00:00
Stephan Aßmus
71d2531d52 terminate_program() is now actually called - forgot to commit this before...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15849 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-06 11:09:44 +00:00
Stephan Aßmus
34a9556215 Made our glue code compatible to BeOS again. IOW executables compiled for Haiku will
now run under BeOS as well (as long as they don't use any functions that are not
available under R5).
The solution is a bit messy, but we have to live with it :-)
The runtime loader now patches the __gRuntimeLoader symbol in libroot.so to point
to its exported structure instead of passing it to the init functions as an
argument.
(Hax0red by axeld and bonefish on stippi's assimilated machine -- resistence is futile)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15848 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-06 03:48:11 +00:00
Stephan Aßmus
269293b0ea Selected objects can be removed with the delete key.
Added testbed for BTabView.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15847 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-05 23:51:23 +00:00
Stefano Ceccherini
a041f6e8f6 Fixed a couple problems in the time keeping mechanism, which got broken lately. Done in tandem with Korli
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15846 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-05 16:03:22 +00:00
Jérôme Duval
8f9f676b46 we don't use atomic_get64 to read a read-only area, not authorized and throw a VM fault
this fix #83 partially


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15845 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-05 15:09:50 +00:00
Stefano Ceccherini
3b39bd1d07 slightly better layout, the left view accomodates its width to fit the controls. The boxes inside it don't, yet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15844 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-05 13:41:20 +00:00
Stefano Ceccherini
7898383a8a Implemented AS_CREATE_PICTURE, started cleaning up Picture.cpp
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15843 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-05 10:27:29 +00:00
Stefano Ceccherini
8f3f25cf63 Merged the four AS_LAYER_DRAW_BITMAP handlers into just one handler
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15842 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 12:15:58 +00:00
Stefano Ceccherini
448641c5c1 Fixed all the warnings in Chart. This app is still VERY font-insensitive and it doesn't do ANY error checking, but I won't fix it. At least, not now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15841 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 10:14:02 +00:00
Stefano Ceccherini
9c0c899e7d Added a copy constructor to ServerPicture. ServerPicture's constructors are private now, and can be called only from ServerApp (friend). Changed BList to a stl::stack which is better suited as a stack... Changed ServerApp::CreatePicture() to accept a picture to clone, instead of passing back a token which was never used anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15840 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 09:49:47 +00:00
Jérôme Duval
ebc8a403e5 Installer makes use of FSCopyFolder in libtracker.so
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15839 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 07:57:21 +00:00
Stefano Ceccherini
ee6bcb7d78 Initial support for recording (some, for now) drawing events into a BPicture
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15838 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 07:30:38 +00:00
Ingo Weinhold
e55e1a0e66 Implemented the PPC specific RTC support. We search for an "rtc"
device in the Open Firmware implementation of boot loader and
pass its path to the kernel, where it's opened and used for
getting/setting the real time. The expensive atomic_*64() on PPC
32-bit make things a bit more complicated. Moreover, missing
64 bit multiplication and division instructions won't really
allow system_time() to be anywhere near as fast as on x86. :-/


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15837 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 04:55:04 +00:00
Ingo Weinhold
850f611735 Fixed GCC4 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15836 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 02:35:12 +00:00
Ingo Weinhold
09bb4e9ac5 The real_time_data structure contains an architecture specific
substructure now (that's the only member actually). The system time
offset is therefore accessed via architecture specific accessor
functions.
Note, that this commit breaks the PPC build. Since I want to rename at
least one file I've already changed, I can't avoid that.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15835 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 02:17:59 +00:00
Axel Dörfler
3a6add495c Enabled Deskbar add-ons. They don't work that good, but they don't crash
the Deskbar anymore. It's still disabled for the libbe_test build, though
(as it will find incompatible add-ons via queries there).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15834 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-04 00:28:11 +00:00
Axel Dörfler
7a243210d4 Added desklink.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15833 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-03 23:29:33 +00:00
Axel Dörfler
ab364a18e9 * Removed a superfluous SetMouseEventMask() in the Slider constructor (at least
it was good enough to fix SetMouseEventMask() to no longer drop into the debugger).
* Minor cleanup, renamed member variables to comply with our style guide.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15832 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-03 23:28:23 +00:00