Commit Graph

37772 Commits

Author SHA1 Message Date
cl
e7045955c7 kernel part of no-syscall upcall stack return: libpthread registers
an offset between ss_sp and struct sa_stackinfo_t (located in struct
__pthread_st) when calling sa_register.  The kernel increments the
sast_gen counter in struct sastack when an upcall stack is used.
libpthread increments the sasi_stackgen counter in struct
sa_stackinfo_t when an upcall stack is freed.  The kernel compares the
two counters to decide if a stack is free or in use.

- add struct sa_stackinfo_t with sasi_stackgen to count stack use in
  userland
- add sast_gen to struct sastack to count stack use in kernel
- add SA_FLAG_STACKINFO to enable the stackinfo_offset argument in the
  sa_register syscall
- add sa_stackinfo_offset to struct sadata for offset between ss_sp
  and struct sa_stackinfo_t
- add ssize_t stackinfo_offset argument to sa_register, initialize
  struct sadata's sa_stackinfo_offset from it if SA_FLAG_STACKINFO is
  set
- add sa_getstack, sa_getstack0, sa_stackused and sa_setstackfree
  functions to find/use/free upcall stacks and use these where
  appropriate
- don't record stack for upcall in sa_upcall0
- pass sau to sa_switchcall instead of l2 (l2 = curlwp in sa_switchcall)
- add sa_vp_blocker to struct sadata to pass recently blocked lwp to
  sa_switchcall
- delay finding a stack for blocked upcalls to sa_switchcall
- add sa_stacknext to struct sadata pointing to next most likely free
  upcall stack; also g/c sa_stackslist in struct sadata and sast_list
  in struct sastack
- add L_SA_WOKEN flag: LWP is on sa_woken queue
- add L_SA_RECYCLE flag: LWP should be recycled in sa_setwoken
- replace l_upcallstack with L_SA_WOKEN/L_SA_RECYCLE/L_SA_BLOCKING
  flags
- g/c now unused sast_blocker in struct sastack
- make sa_switchcall, sa_upcall0 and sa_upcall_getstate static in
  kern_sa.c
- call sa_upcall_userret only once in userret
- split sa_makeupcalls out of sa_upcall_userret and use to process
  the sa_upcalls queue
- on process exit: mark LWPs sleeping in saunblock interruptible; also
  there are no LWPs sleeping on l->l_upcallstack anymore; also clear
  sa_wokenq_head to prevent unblocked upcalls

additional changes:
- cleanup timerupcall sa_vp == curlwp check
- add check in sa_yield if we didn't block on our way here and we
  wouldn't any longer be the LWP on the VP
- invalidate sa_vp_ofaultaddr after resolving pagefault
2004-01-02 18:52:17 +00:00
uwe
9f2e9e23a0 Update the root window after showing the 'Last chance...' dialog. 2004-01-02 12:13:36 +00:00
sekiya
a1f8b0618b Wire down zsc/zstty mapping and add commented-out entries for
IP20 keyboard/mouse.
2004-01-02 01:39:25 +00:00
sekiya
aa9d797070 IP20 has two z8530 chips -- one at 0xd00 for keyboard/mouse, one at 0xd10
for serial ports.  Attach the former as zs1 to keep serial console goo as
simple as possible.
2004-01-02 01:04:46 +00:00
sekiya
f2bccdeea4 Add trailing newline. Noticed by Steve Rumble. 2004-01-02 00:41:23 +00:00
bjh21
2becc547c7 The lmcaudio driver was only ever used on the RC7500, which we don't support
these days.  Let the CVS history be its only memorial.
2004-01-01 19:12:13 +00:00
thorpej
77eb53d196 Update for opencrypto changes. 2004-01-01 18:46:14 +00:00
bjh21
cc4e11e8e4 No need to #include "vidcaudio.h" here, so don't do it. 2004-01-01 18:07:58 +00:00
chris
8261a721cc Correct the usage of the 4th arg to mainbus_bs_map. It's a flags arg, so
test for the CACHEABLE bit, rather than assuming a non-zero means cacheable
2004-01-01 18:07:27 +00:00
bjh21
7ef29ca465 Rather than calling pmap_extract() from an IPL_AUDIO interrupt handler (which
is naughty even if it does work), find out the complete list of physical pages
we'll have to DMA from in vidcaudio_trigger_output() and save it for use by
the interrupt handler.
2004-01-01 17:52:19 +00:00
thorpej
527c829fa0 Rename:
- wdc_xfer to ata_xfer
- channel_queue to ata_queue
and move them to <dev/ata/atavar.h> so they can be used by non-wdc ATA
controllers.  Clean up the member names of these structures while at it.
2004-01-01 17:18:53 +00:00
bjh21
48a569efe8 Restore a call to vidcaudio_ctrl() that I accidentally deleted. 2004-01-01 16:42:36 +00:00
bjh21
bd6ca18b7e Tidy up debugging printfs to use a single #ifdef and a DPRINTF() macro,
rather than #ifdefs scattered all over the code.
2004-01-01 16:35:35 +00:00
bjh21
ef9b97ce8a Add possibly-useful support for 16-bit sound on VIDC20 systems, using
RISC OS's "*Configure SoundSystem" setting to decide whether to use 16-bit
mode.  Loosely based on parts of Richard Earnshaw's "sound16" patch.
2004-01-01 16:23:15 +00:00
chris
0415feb0e4 Correct entries for IRQ_NEVENT1 and IRQ_NEVENT2. They were both out by one.
This now means a disk is detected on my RiscStation board.
2004-01-01 15:51:48 +00:00
pk
c6ac21f702 Enable reset of a process's alternative signal stack flag. 2004-01-01 15:02:31 +00:00
sekiya
f8c37f800f Don't panic when attempting to share interrupts on ip2x -- just print an
informative message and gracefully return.
2004-01-01 13:32:30 +00:00
sekiya
93f0e8c8a0 It's important to use good quality cables when working with SGI serial ports.
Enable zs console for IP20.
2004-01-01 13:29:08 +00:00
bjh21
45feca04f6 When returning our actual sample rate to audio(4) in 16-bit mode, use the right
base clock rate.
2003-12-31 21:24:47 +00:00
bjh21
8ed8ec9577 Add a little comment explaining how to convert between RISC OS and hardware
CMOS addresses, since the old one's been lost.
2003-12-31 18:49:00 +00:00
jonathan
01c51dab61 Split opencrypto configuration into an attribute, usable by inkernel
clients, and a pseudo-device for userspace access.

The attribute is named `opencrypto'. The pseudo-device is renamed to
"crypto", which has a dependency on "opencrypto". The sys/conf/majors
entry and pseudo-device attach entrypoint are updated to match the
new pseudo-device name.

Fast IPsec (sys/netipsec/files.ipsec) now lists a dependency on the
"opencrypto" attribute.  Drivers for crypto accelerators (ubsec,
hifn775x) also pull in opencrypto, as providers of opencrypto transforms.
2003-12-31 16:44:26 +00:00
bjh21
d21d97a649 Make local functions static. 2003-12-31 15:40:31 +00:00
bjh21
81395409be vidcaudio(4) now needs mulaw and aurateconv. 2003-12-31 15:15:29 +00:00
bjh21
176435992e Substantial rewrite of vidcaudio(4). I don't know if the old version
had ever worked, but if it had, it had bit-rotted so far that it
almost all needed replacing.  The new version support both 8-bit sound
on the VIDC20 and 16-bit sound on the ARM7500 and ARM7500FE.
sysbeep() support has been lost, but I'm not sure whether that belongs
here or in audio(4) anyway.  Support for 16-bit sound on the VIDC20
isn't present because I don't have the hardware to test it.  Donations
welcome!
2003-12-31 15:06:24 +00:00
bjh21
2432228b70 Add definitions of the bits in the Sound Control Register (SCR). 2003-12-31 14:41:15 +00:00
bjh21
0630d87772 Add some useful flag definitions for DMA registers. 2003-12-31 14:40:32 +00:00
thorpej
0beb075071 Simplify allocation of the channel queue. 2003-12-31 02:50:34 +00:00
thorpej
4391735587 Simplify allocation of the channel queue. 2003-12-31 02:47:44 +00:00
thorpej
2dafabdb20 Simplfy allocation of the channel queue. 2003-12-31 02:45:04 +00:00
thorpej
b5b951b13e Simplify allocation of the channel queue. 2003-12-31 02:41:22 +00:00
simonb
9c7cfca904 ANSIfy, KNF. 2003-12-31 02:40:26 +00:00
sekiya
d721fc82ce Force ARCS console for IP20 until the console-on-zs crashing problem is
fixed.  Store the board revision for future use, while we're at it.
2003-12-30 23:56:19 +00:00
sekiya
1cf4c96f39 Don't flush caches here. Fixes crash on IP20 (which apparently occurs only
with beta Blackjack boards that incorporate ARCS V1).
2003-12-30 23:50:25 +00:00
sekiya
a072684caa Adapt if_sq to HPC abstraction layer. It took both Steve Rumble and myself
to untangle the unhappiness that arises from the design differences between
HPC1 and HPC3.
2003-12-30 23:48:07 +00:00
sekiya
52063657cc Force little-endian mode on hpc1, and attach zs on IP20. 2003-12-30 23:45:25 +00:00
augustss
044205cf85 Alphabetize IDE controllers 2003-12-30 18:09:50 +00:00
pk
90c49c51c7 When powering down, first ask the PROM to do it for us. 2003-12-30 14:29:30 +00:00
pk
70f20a1217 Replace the traditional buffer memory management -- based on fixed per buffer
virtual memory reservation and a private pool of memory pages -- by a scheme
based on memory pools.

This allows better utilization of memory because buffers can now be allocated
with a granularity finer than the system's native page size (useful for
filesystems with e.g. 1k or 2k fragment sizes).  It also avoids fragmentation
of virtual to physical memory mappings (due to the former fixed virtual
address reservation) resulting in better utilization of MMU resources on some
platforms.  Finally, the scheme is more flexible by allowing run-time decisions
on the amount of memory to be used for buffers.

On the other hand, the effectiveness of the LRU queue for buffer recycling
may be somewhat reduced compared to the traditional method since, due to the
nature of the pool based memory allocation, the actual least recently used
buffer may release its memory to a pool different from the one needed by a
newly allocated buffer. However, this effect will kick in only if the
system is under memory pressure.
2003-12-30 12:33:13 +00:00
manu
fe7a5ddf22 Fix PowerPC ports build with KGDB. 2003-12-30 11:23:20 +00:00
yamt
8a7df6a14b (MULTIPROCESSOR version of) need_resched:
- nothing needs to be done if ci_want_resched is already set.
- if the cpu isn't running any lwp, send a no-op ipi to it
  so that it can resume immediately from halting in idle loop
  without having to wait until the next clock tick.
some advices from Stephan Uphoff.
2003-12-30 03:57:19 +00:00
yamt
26db734594 fixes and optimizations from Stephan Uphoff.
- pmap_enter: zap PTE and read attributes atomically to
  eliminate a race window which could cause lost of attributes.
- reduce number of TLB shootdown by using some assumptions
  about PTE handling.

for more details, see "SMP improvements for pmap" thread on port-i386@
around May 2003.
2003-12-30 03:55:01 +00:00
shin
755c62af21 initialize sc_epoch and RTC properly when reboot/resume.
Addresses PR/20091.
2003-12-30 03:54:35 +00:00
yamt
4cd02fe3d9 g/c unused x86_ipisend. 2003-12-30 03:52:01 +00:00
bjh21
8907f89465 speaker_ctl() is optional, and vidcaudio_speaker_ctl() did nothing, so kill it. 2003-12-29 16:49:31 +00:00
bjh21
0a64302931 Control debugging with VIDCAUDIO_DEBUG rather that DEBUG, to avoid confusion
with the global kernel macro called DEBUG.
2003-12-29 16:45:58 +00:00
bjh21
1b64799344 Minor KNF. 2003-12-29 16:41:22 +00:00
bjh21
32cf38df51 Fix a DEBUG printf. 2003-12-29 16:36:48 +00:00
bjh21
87bcc196e1 Use NULL rather than 0 to initialise unused function pointers. 2003-12-29 16:25:30 +00:00
pk
20ad8911d9 hpfinish: pass correct buffer to diskerr(); 2003-12-29 16:23:58 +00:00
bjh21
8dcadd2b7c KNF. 2003-12-29 16:20:46 +00:00